#include<bits/stdc++.h>
using namespace std;
const int N = 2e3 + 10;
int t[N];
int b[N];
bool add(int x[],int n){
for(int i = 1;i <= n;i++){
if(b[i] - x[i] < 0){
return 0;
}
}
return 1;
}
int main(){
int t1;
scanf("%d",&t1);
while(t1--){
int n;
scanf("%d",&n);
for(int i = 1;i <= n;i++){
cin >> t[i];
}
for(int i = 1;i <= n;i++){
cin >> b[i];
}
int tmp[N];
memset(tmp,0,sizeof(tmp));
int num = n;
for(int i = 1;i <= n;i++){
tmp[i] = t[i] + t[num];
num--;
}
bool flg = 0;
for(int i = 1;i <= n;i++){
if(b[i] < tmp[i]){
flg = 1;
break;
}
}
if(flg == 1){
bool flg2 = 0;
int shu;
for(int i = 1;i <= n;i++){
if(b[i] % t[i] == 0){
if(i == 1){
continue;
}
else{
if(b[i] / t[i] != shu){
flg2 = 1;
break;
}
shu = b[i] / t[i];
}
}
else {
flg2 = 1;
break;
}
}
if(flg2){
puts("NO");
}
else{
puts("YES");
}
}
else{
bool flg3 = 0;
bool flg4 = 0;
int num = 0;
while(1){
if(!add(tmp,n))break;
for(int i = 1;i <= n;i++){
b[i] -= tmp[i];
if(b[i] == 0){
num++;
}
}
if(num == n){
puts("YES");
flg4 = 1;
break;
}
}
if(flg4)continue;
int num2 = 0;
bool flg5 = 0;
bool flg6 = 0;
while(1){
if(!add(t,n))break;
for(int i = 1;i <= n;i++){
b[i] -= t[i];
if(b[i] == 0){
num2++;
}
}
if(num2 == n){
puts("YES");
flg6 = 1;
break;
}
if(flg5)break;
}
if(flg6)continue;
puts("NO");
}
}
return 0;
}