/*
数据中段 想要的 3 3 1
已拥有的 1 2 5
1和5 是最高级 3和2 是第二级 3和1 是最低级
根据提示信息 高级的能变成低级的 已拥有的5个高级可以变成5个中级或5个低级 这里就是 5个高级变成1个高级 1个中级 3个低级 从而满足要求;
解决这道题目 首先要比较最高级的大小 如果拥有的大于想要的 就把高级的差值交给下一级 反之 不满足 输出 No 以此类推解决。
*/
#include <iostream>
using namespace std;
int main()
{
int t,i;
cin>>t;
while(t--)
{
int n,a[101],b[101];
long long c[101];//不这样内存不够
int count=0,ret=1;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
}
for(i=0;i<n;i++)
{
cin>>b[i];
}
for(i=0;i<n;i++)
{
c[i]=b[i]-a[i];
}
for(i=n-1;i>=0;i--)
{
if(c[i]<0)
{
ret=0;
break;
}
if(c[i]>0)
{
c[i-1]+=c[i];
}
}
if(ret==0)
{
cout<<"No"<<endl;
}
else
{
cout<<"Yes"<<endl;
}
}
return 0;
}