// Source: https://u...content-available-to-author-only...o.guide/general/io
#include <bits/stdc++.h>
using namespace std;
using ll = long long int;
#define FOR(i,a,b) for(int i = a; i < b; i++)
void solve(){
int n;
cin >> n;
vector <ll> l1(n); FOR(i,0,n) cin >> l1[i];
vector <ll> dp(n,1000000000000000LL); vector <ll> appear(n,-1);
vector <bool> good(n, false);
// dp[i] = cost to remove i, when remove i the fall damage go
// directly on top of the one on I, and we could
// 1. link to the next number more than 1 cost
// 2. link it directly to the cost of the that number.
// we should only link directly to the cost of that number if on top of it is a 1
// or if it is the last one.
for (int i = n -2; i >= 0; i --){
appear[i] = (l1[i+1] >1 ? i + 1 : appear[i+1]);
}
for (int i = n-1; i >= 0; i--){
good[i] = (i == n-1 || l1[i+1] == 1);
}
dp[n-1] = l1[n-1];
for (int i =n -2; i >= 0; i--){
dp[i] = dp[i+1] + l1[i];
ll v = l1[i] + max(0LL, l1[i+1] - (i + 1));
if (appear[i+1] == -1){
dp[i] = min(dp[i], v);
// cout << dp[i] << " ";
continue;
}
if (appear[i+1] == i + 2){
ll g = v;
v += dp[i+2];
if (good[appear[i+1]]){
v = min(v, g + dp[appear[i+1]] - 1);
}
v = min(v, g + dp[appear[i + 1]]);
if (i + 3 < n){
v = min(v, g + l1[i+2] - 1 + dp[i+3]);
}
}
else{
ll g = v;
v = g + min(dp[i+2], dp[appear[i+1] - 1]);
if (good[appear[i+1]]){
v = min(v, g + dp[appear[i+1]] - 1);
}
v = min(v, g + dp[appear[i + 1]]);
}
dp[i] = min(dp[i], v);
// cout << dp[i] << " ";
}
// cout << "\n";
cout << dp[0] << "\n";
}
int main() {
int t;
cin >> t;
while (t--) solve();
return 0;
}
Ly8gU291cmNlOiBodHRwczovL3UuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm8uZ3VpZGUvZ2VuZXJhbC9pbwoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nIGludDsKI2RlZmluZSBGT1IoaSxhLGIpIGZvcihpbnQgaSA9IGE7IGkgPCBiOyBpKyspCnZvaWQgc29sdmUoKXsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICB2ZWN0b3IgPGxsPiBsMShuKTsgRk9SKGksMCxuKSBjaW4gPj4gbDFbaV07IAogICAgdmVjdG9yIDxsbD4gZHAobiwxMDAwMDAwMDAwMDAwMDAwTEwpOyB2ZWN0b3IgPGxsPiBhcHBlYXIobiwtMSk7CiAgICB2ZWN0b3IgPGJvb2w+IGdvb2QobiwgZmFsc2UpOwogICAgLy8gZHBbaV0gPSBjb3N0IHRvIHJlbW92ZSBpLCB3aGVuIHJlbW92ZSBpIHRoZSBmYWxsIGRhbWFnZSBnbyAKICAgIC8vIGRpcmVjdGx5IG9uIHRvcCBvZiB0aGUgb25lIG9uIEksIGFuZCB3ZSBjb3VsZAogICAgLy8gMS4gbGluayB0byB0aGUgbmV4dCBudW1iZXIgbW9yZSB0aGFuIDEgY29zdAogICAgLy8gMi4gbGluayBpdCBkaXJlY3RseSB0byB0aGUgY29zdCBvZiB0aGUgdGhhdCBudW1iZXIuIAogICAgLy8gd2Ugc2hvdWxkIG9ubHkgbGluayBkaXJlY3RseSB0byB0aGUgY29zdCBvZiB0aGF0IG51bWJlciBpZiBvbiB0b3Agb2YgaXQgaXMgYSAxCiAgICAvLyBvciBpZiBpdCBpcyB0aGUgbGFzdCBvbmUuCiAgICBmb3IgKGludCBpID0gbiAtMjsgaSA+PSAwOyBpIC0tKXsKICAgICAgICBhcHBlYXJbaV0gPSAobDFbaSsxXSA+MSA/IGkgKyAxIDogYXBwZWFyW2krMV0pOwogICAgfQogICAgZm9yIChpbnQgaSA9IG4tMTsgaSA+PSAwOyBpLS0pewogICAgICAgIGdvb2RbaV0gPSAoaSA9PSBuLTEgfHwgbDFbaSsxXSA9PSAxKTsKICAgIH0KICAgIGRwW24tMV0gPSBsMVtuLTFdOwogICAgZm9yIChpbnQgaSA9biAtMjsgaSA+PSAwOyBpLS0pewogICAgICAgIGRwW2ldID0gZHBbaSsxXSArIGwxW2ldOwogICAgICAgIGxsIHYgPSBsMVtpXSArIG1heCgwTEwsIGwxW2krMV0gLSAoaSArIDEpKTsKICAgICAgICBpZiAoYXBwZWFyW2krMV0gPT0gLTEpewogICAgICAgICAgICBkcFtpXSA9IG1pbihkcFtpXSwgdik7CiAgICAgICAgICAgIC8vIGNvdXQgPDwgZHBbaV0gPDwgIiAiOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGFwcGVhcltpKzFdID09IGkgKyAyKXsKICAgICAgICAgICAgbGwgZyA9IHY7CiAgICAgICAgICAgIHYgKz0gZHBbaSsyXTsgCiAgICAgICAgICAgIGlmIChnb29kW2FwcGVhcltpKzFdXSl7CiAgICAgICAgICAgICAgICB2ID0gbWluKHYsIGcgKyBkcFthcHBlYXJbaSsxXV0gLSAxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2ID0gbWluKHYsIGcgKyBkcFthcHBlYXJbaSArIDFdXSk7CiAgICAgICAgICAgIGlmIChpICsgMyA8IG4pewogICAgICAgICAgICAgICAgdiA9IG1pbih2LCBnICsgbDFbaSsyXSAtIDEgKyBkcFtpKzNdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBsbCBnID0gdjsKICAgICAgICAgICAgdiA9IGcgKyBtaW4oZHBbaSsyXSwgZHBbYXBwZWFyW2krMV0gLSAxXSk7CiAgICAgICAgICAgIGlmIChnb29kW2FwcGVhcltpKzFdXSl7CiAgICAgICAgICAgICAgICB2ID0gbWluKHYsIGcgKyBkcFthcHBlYXJbaSsxXV0gLSAxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2ID0gbWluKHYsIGcgKyBkcFthcHBlYXJbaSArIDFdXSk7CiAgICAgICAgfQogICAgICAgIGRwW2ldID0gbWluKGRwW2ldLCB2KTsKICAgICAgICAvLyBjb3V0IDw8IGRwW2ldIDw8ICIgIjsKICAgIH0KICAgIC8vIGNvdXQgPDwgIlxuIjsKICAgIGNvdXQgPDwgZHBbMF0gPDwgIlxuIjsKfQppbnQgbWFpbigpIHsKCWludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0=