#include <bits/stdc++.h>
#include <unordered_map> //无序map
using namespace std;
#define sc scanf
#define pr printf
#define ls rt<<1 
#define rs ls|1
#define lowbit(x) ((x) & -(x)) //树状数组lowbit函数
typedef long long ll;
typedef unsigned long long ull;
const int N = 1e6 + 10;
const int mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
//dpow快速幂取模, fpow快速幂
ll dpow(ll a, ll b) { ll r = 1; while (b){ if(b&1) r = (r*a)%mod; b >>= 1; a = (a*a)%mod; } return r; }
ll fpow(ll a, ll b) { ll r = 1; while (b){ if(b&1) r = (r*a); b >>= 1; a = (a*a); } return r; }
struct node{
    int data; string str; char x;
    //注意构造函数最后这里没有分号哦！
  node() :x(), str(), data(){} //无参数的构造函数数组初始化时调用
  node(int a, string b, char c) :data(a), str(b), x(c){}//有参构造
}st[10];

int n, m;
ll sum[N], ans[N], a[N];
int solve() {
	//int t; cin >> t;
	//while (t--) {
		cin >> n;
		for (int i = 0; i <= n; i++)
			sum[i] = 0, ans[i] = 0;
			
		for (int i = 1; i <= n; i++) {
			cin >> a[i];
			sum[i] = sum[i - 1] + a[i];
		}
		for (int i = 1; i <= n; i++) {
			ans[i] = ans[i - 1] + i - 1;
		}
		for (int i = 1; i <= n; i++) {
			if (sum[i] >= ans[i]) {
				continue;
			}
			else {
				return false;
			}
		}
		return true;
	//}
}
int main() {
	int t; cin >> t;
	while (t--) {
		if (solve()) puts("YES");
		else puts("NO");
	}
	return 0;
}
   	 	  		 		  													