#include <bits/stdc++.h>
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
constexpr long long MAX = 5100000;
constexpr long long INF = 1LL << 60;
constexpr int inf = 1000000007;
constexpr long long mod = 998244353LL;
const long double PI = acos((long double)(-1));
using namespace std;
struct network {
  long long min_l, min_r, max_r;
  network() : min_l(0), min_r(0), max_r(0) {}
  network(long long _min_l, long long _min_r, long long _max_r)
      : min_l(_min_l), min_r(_min_r), max_r(_max_r) {}
};
network get(long long a, long long b) {
  if (a <= b)
    return network(0, b - a, b);
  else
    return network(a - b, 0, b);
}
void merge(network& a, network b) {
  if (a.min_l == -1 or b.min_l == -1) {
    a = network(-1, -1, -1);
    return;
  }
  if (a.max_r < b.min_l) {
    a = network(-1, -1, -1);
    return;
  }
  if (a.min_r >= b.min_l)
    a = network(a.min_l, min(b.max_r, b.min_r + a.min_r - b.min_l),
                min(b.max_r, b.min_r - b.min_l + a.max_r));
  else
    a = network(a.min_l + b.min_l - a.min_r, b.min_r,
                min(b.max_r, b.min_r - b.min_l + a.max_r));
}
void solve() {
  int n;
  scanf("%d", &n);
  vector<long long> a(n);
  for (int i = 0; i < n; i++) scanf("%lld", &a[i]);
  vector<long long> b(n);
  for (int i = 0; i < n; i++) scanf("%lld", &b[i]);
  network nt = get(a[0], b[0]);
  for (int i = 1; i < n; i++) merge(nt, get(a[i], b[i]));
  if (nt.min_l == -1) {
    puts("NO");
    return;
  }
  if (nt.min_l <= nt.min_r)
    puts("YES");
  else
    puts("NO");
}
int main() {
  int kkt;
  scanf("%d", &kkt);
  while (kkt--) {
    solve();
  }
  return 0;
}
