#include <bits/stdc++.h>
using namespace std;
int a[105000];
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    int ml = n, mr = 1;
    for (int i = 2; i <= n; i++) {
      if (a[i] <= a[i - 1])
        mr = i;
      else
        break;
    }
    for (int i = n - 1; i >= 1; i--) {
      if (a[i] <= a[i + 1]) {
        ml = i;
      } else
        break;
    }
    if (ml <= 2 || mr >= n - 1 || mr >= ml) {
      ;
    }
    if (ml - mr == 1) {
      ;
    }
    if (ml - mr == 2) {
      if (a[mr + 1] - a[mr] <= ml) {
        ;
      }
    }
    a[n + 1] = 0;
    for (int i = n + 1; i >= 1; i--) a[i] = a[i] - a[i - 1];
    for (int i = 2; i <= n + 1; i++) {
      if (a[i] >= 0)
        continue;
      else {
        int x = a[1], y = a[i];
        a[1] += max(-x, y);
        a[i] += min(-y, x);
        if (a[1] == 0) {
          break;
        }
      }
    }
    int flag = 1;
    for (int i = n; i >= 2; i--) {
      if (a[i] == 0) continue;
      if (a[i] < 0) {
        flag = 0;
        break;
      } else {
        int x = a[n + 1], y = a[i];
        a[n + 1] += min(-x, y);
        a[i] += max(-y, x);
      }
    }
    if (!flag) {
      printf("NO\n");
      continue;
    }
    for (int i = 1; i <= n + 1; i++) {
      if (a[i] != 0) {
        flag = 0;
        break;
      }
    }
    if (!flag) {
      printf("NO\n");
    } else {
      printf("YES\n");
    }
    if (ml - mr > 2) {
      int flag = 0;
      for (int i = mr + 2; i <= ml - 1; i++) {
        if (a[i] != a[i - 1]) {
          ;
        }
      }
      if (flag == 0 && a[mr + 1] - a[mr] <= ml) {
        ;
      }
    }
  }
}
