#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN = 1e5 + 7;
int t, n, a[MAXN], f[MAXN];
inline int getf(int x) {
	return f[x] == x ? x : f[x] = getf(f[x]);
}
signed main() {
	scanf("%lld", &t);
	while(t-- > 0) {
		scanf("%lld", &n);
		int cnt = 0;
		for(int i = 1; i <= n; ++i) {
			scanf("%lld", &a[i]);
			f[i] = i;
			// printf("%d %d\n", i, a[i]);
		}
		f[n + 1] = n + 1;
		for(int i = n; i >= 1; --i) {
			if(a[i] == 1)f[i] = getf(i + 1);
			// printf("%d %d\n", i, getf(i));
		}
		bool flg = 1;
		while(flg) {
			flg = 0;
			for(int i = 1; i <= n;) {
				if(a[i] > 1) {
					if(a[i] + i > n) {
						cnt += a[i] - n + i - 1;
						a[i] = n - i + 1;
					}
					// printf("%d %d?\n", i, a[i]);
					if(a[i] == 1) {
						f[i] = getf(i + 1);
						break;
					}
					flg = 1;
					for(int j = i; j <= n;) {
						int q = j;
						// printf("%d %d %d\n", j, getf(j), a[j]);
						if(a[j] > 1) {
							j += a[j];
							a[q]--;
							// printf("%d %d %d\n", q, a[q], getf(q));
							if(a[q] == 1)f[q] = getf(q + 1);
						} else {
							j = getf(j);
						}
					}
					cnt++;
					break;
				} else {
					// printf("%d %d\n", i, getf(i));
					i = getf(i);
				}
			}
		}
		printf("%lld\n", cnt);
	}
	return 0;
}
/*

1
10
9827 10000 2 4 6 3 2 12791 12585 6

*/