#include <bits/stdc++.h>
using namespace std;
const int N = 1001000;
int n;
int a[N], A[N];
int b[N], B[N];
int Cut(int& x, int& y) {
  int Can = min(x, y);
  x -= Can;
  y -= Can;
}
bool Check(int Mid) {
  for (int i = 0; i < n; i++) A[i] = a[i];
  for (int i = 0; i < n; i++) B[i] = b[i];
  A[0] -= Mid;
  B[0] -= Mid;
  for (int i = 1; i < n; i++) {
    Cut(B[i - 1], A[i]);
    Cut(B[i], A[i]);
    if (A[i] > 0) return false;
  }
  return true;
}
int main() {
  int T;
  cin >> T;
  while (T--) {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) scanf("%d", a + i);
    for (int i = 0; i < n; i++) scanf("%d", b + i);
    int Max = -1;
    int Low = 0, High = min(a[0], b[0]);
    while (Low <= High) {
      int Mid = Low + (High - Low) / 2;
      if (Check(Mid)) {
        Max = Mid;
        Low = Mid + 1;
      } else {
        High = Mid - 1;
      }
    }
    if (Max == -1) {
      puts("NO");
      continue;
    }
    Check(Max);
    Cut(B[n - 1], A[0]);
    Cut(B[n - 1], A[n - 1]);
    if (A[0] > 0 || A[n - 1] > 0) {
      puts("NO");
      continue;
    }
    puts("YES");
  }
}
