#include <bits/stdc++.h>
using namespace std;
const int maxn = 110;
int hi[maxn] = {0};
int n, k;
long long int m;
int flag = 0;
int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    flag = 0;
    memset(hi, 0, sizeof hi);
    scanf("%d%lld%d", &n, &m, &k);
    for (int i = 0; i < n; i++) {
      scanf("%d", &hi[i]);
    }
    for (int i = 0; i < n - 1; i++) {
      if (hi[i] >= hi[i + 1]) {
        int qu = min(hi[i], (hi[i] - hi[i + 1] + k));
        m += qu;
      }
      if (hi[i] < hi[i + 1]) {
        if (hi[i + 1] - hi[i] <= k) {
          m += (hi[i] - max(0, hi[i + 1] - k));
        } else {
          int temp = hi[i + 1] - k - hi[i];
          if (m >= temp) {
            m -= temp;
          } else {
            flag = 1;
            break;
          }
        }
      }
    }
    if (flag == 1) printf("NO\n");
    if (flag == 0) printf("YES\n");
  }
  return 0;
}
