#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
int n;
bool ok;
int a[maxn], b[maxn], c[maxn];
struct node {
  long long mis, mie, mae;
};
inline node getval(long long a, long long b) {
  node res = {max(0ll, a - b), max(b - a, 0ll), b};
  return res;
}
inline node unit(node a, node b) {
  node res = {-1, -1, -1};
  if (a.mae < b.mis) ok = 0;
  if (a.mie >= b.mis)
    res = {a.mis, min(b.mae, b.mie + a.mie - b.mis),
           min(b.mae, a.mae - b.mis + b.mie)};
  else
    res = {a.mis + b.mis - a.mie, b.mie, min(b.mae, a.mae - b.mis + b.mie)};
  return res;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int T;
  cin >> T;
  while (T--) {
    cin >> n;
    for (int i = 1; i <= n; ++i) cin >> a[i];
    for (int i = 1; i <= n; ++i) cin >> b[i];
    ok = 1;
    node now = getval(a[1], b[1]);
    for (int i = 2; i <= n; ++i) {
      now = unit(now, getval(a[i], b[i]));
    }
    if (now.mis > now.mie) ok = 0;
    if (ok)
      cout << "YES\n";
    else
      cout << "NO\n";
  }
  return 0;
}
