problem-link : https://www.codechef.com/problems/TFALL?tab=statement
# cook your dish here
for _ in range(int(input())):
n=int(input())
X = list(map(int,input().split()))
P = list(map(int,input().split()))
# flag
ans=0
#total groups
grp=1
# move right check for groups
for x in range(n-1):
if X[x]+P[x]>=X[x+1]:continue
else:grp+=1
# Is it possible ??
if grp<=2:ans=1
#reset
grp=1
# move left check for groups
for x in range(n-1):
if X[x+1]+P[x+1]<=X[x]:continue
else:grp+=1
# Is it possible ??
if grp<=2:ans=1
#check for both direction
left = [False for x in range(n)]
right = [False for x in range(n)]
left[0]=True
right[n-1]=True
#Move left
for x in range(1,n):
if X[x]-P[x]<=X[x-1]:
left[x]=True
continue
for x in range(n-2,-1,-1):
if X[x]+P[x]>=X[x+1]:
right[x]=True
continue
prefix=[0 for x in range(n)]
suffix=[0 for x in range(n)]
suffix[n-1]=1
prefix[0]=1
for x in range(1,n):
if(left[x]): prefix[x]+=prefix[x-1]+1
else:prefix[x]=prefix[x-1]
for x in range(n-2,-1,-1):
if(right[x]): suffix[x]+=suffix[x+1]+1
else:suffix[x]=suffix[x+1]
for x in range(n):
if prefix[x]+suffix[x-prefix[x]]==n:
ans=1
# print(prefix)
# print(suffix)
if(ans):print("YES")
else:print("NO")