#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void prn(Arg1&& arg1) {
  cout << arg1 << "\n";
}
template <typename Arg1, typename... Args>
void prn(Arg1&& arg1, Args&&... args) {
  cout << arg1 << " ";
  prn(args...);
}
template <typename Arg1>
void prs(Arg1&& arg1) {
  cout << arg1 << " ";
}
template <typename Arg1, typename... Args>
void prs(Arg1&& arg1, Args&&... args) {
  cout << arg1 << " ";
  prs(args...);
}
template <typename Arg1>
void read(Arg1&& arg1) {
  cin >> arg1;
}
template <typename Arg1, typename... Args>
void read(Arg1&& arg1, Args&&... args) {
  cin >> arg1;
  read(args...);
}
int n;
vector<int> a, b;
long long get(long long prev) {
  for (int i = 1; i < n; ++i) {
    long long get = max(0LL, a[i] - prev);
    if (get > b[i]) return -1;
    prev = b[i] - get;
  }
  return prev;
}
void solve() {
  read(n);
  a.resize(n);
  b.resize(n);
  for (int i = 0; i < n; ++i) {
    read(a[i]);
  }
  for (int i = 0; i < n; ++i) {
    read(b[i]);
  }
  int st = 0, en = b[0];
  if (get(en) == -1) {
    prn("NO");
    return;
  }
  while (st < en) {
    int mid = (st + en) / 2;
    if (get(mid) != -1)
      en = mid;
    else
      st = mid + 1;
  }
  long long lft = b[0] - st;
  long long g = get(st), need = max(0LL, a[0] - lft);
  if (need <= g)
    prn("YES");
  else
    prn("NO");
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1;
  read(t);
  for (int tc = 1; tc <= t; ++tc) {
    solve();
  }
  return 0;
}
