#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
using ll = long long;
template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
// s.find_by_order(k) → Returns an iterator to the k-th smallest element (0-based index).
// s.order_of_key(x) → Returns the number of elements strictly less than x.
//abe saale ll ki range 1e18 tak hin hoti hai
//return by reference se time bachta hai
const ll mod = 1e9 + 7;
const ll mod2 = 998244353;
ll gcd(ll a, ll b) {
return b ? gcd(b, a % b) : a;
}
ll pow(ll a, ll b) {
ll ans = 1;
while (b) {
if (b & 1) ans *= a;
b >>= 1;
a *= a;
}
return ans;
}
ll pow(ll a, ll b, ll c) {
ll ans = 1;
while (b) {
if (b & 1) ans = (ans * a) % c;
b >>= 1;
a = (a * a) % c;
}
return ans;
}
vector<ll> seiveoferasthones(ll n)
{
vector<bool> prime(n + 1, true);
prime[0] = false;
prime[1] = false;
for (int i = 2; i * i <= n; i++)
{
if (prime[i])
{
for (int j = i * i; j <= n; j += i)
{
prime[j] = false;
}
}
}
vector <ll> primes;
for(ll i = 2 ; i <= n ; i++)
{
if(prime[i])
{
primes.push_back(i);
}
}
return primes;
}
void check(bool b) {
if (b)
cout << "Yes\n";
else
cout << "No\n";
}
// DFS
void dfs(vector<vector<ll>> &adj , vector <bool> &visited , ll s)
{
if(visited[s])
{
return;
}
visited[s] = true;
for(auto u : adj[s])
{
dfs(adj,visited,u);
}
}
// BFS
// queue <ll> q;
// vector <bool> visited(n+1,false);
// vector <ll> distance(n+1,0);
// visited[x] = true;
// distance[x] = 0;
// q.push(x);
// while(!q.empty())
// {
// ll s = q.front();
// q.pop();
// for(auto u:adj[s])
// {
// if(visited[u])
// {
// continue;
// }
// visited[u] = true;
// distance[u] = distance[s] + 1;
// q.push(u);
// }
// }
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t;
cin >> t;
while (t--) {
ll n;
cin >> n;
vector<ll>vec(n);
for(int i = 0 ; i < n ; i++)
{
cin >> vec[i] ;
}
vector <ll> allowed(n);
for(int i = 0 ; i < n ; i++)
{
allowed[i] = ceil((double)vec[i]/2)-1;
}
ll count = ((n)*(n+1))/2;
// cout << count << endl;
for(int i = 0 ; i < n ; i++)
{
ll temp = 0;
for(int j = i+1 ; j < n ;j++)
{
ll temp2 = 0;
if(allowed[j] >= (j-i))
{
temp2 = j-i;
}
else
{
temp2 = allowed[j];
}
if(temp2 <= temp)
{
if(vec[j] <= temp)
{
count -= n-j;
break;
}
else
{
temp = vec[j];
}
}
else
{
temp = temp2;
}
}
}
cout << count << endl;
}
return 0;
}
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KCnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBsbCA9IGxvbmcgbG9uZzsKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTxULCBudWxsX3R5cGUsIGxlc3M8VD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+OwovLyBzLmZpbmRfYnlfb3JkZXIoaykg4oaSIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGstdGggc21hbGxlc3QgZWxlbWVudCAoMC1iYXNlZCBpbmRleCkuCi8vIHMub3JkZXJfb2Zfa2V5KHgpIOKGkiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgc3RyaWN0bHkgbGVzcyB0aGFuIHguCi8vYWJlIHNhYWxlIGxsIGtpIHJhbmdlIDFlMTggdGFrIGhpbiBob3RpIGhhaQovL3JldHVybiBieSByZWZlcmVuY2Ugc2UgdGltZSBiYWNodGEgaGFpIAoKY29uc3QgbGwgbW9kID0gMWU5ICsgNzsKY29uc3QgbGwgbW9kMiA9IDk5ODI0NDM1MzsKCmxsIGdjZChsbCBhLCBsbCBiKSB7CiAgICByZXR1cm4gYiA/IGdjZChiLCBhICUgYikgOiBhOwp9CgpsbCBwb3cobGwgYSwgbGwgYikgewogICAgbGwgYW5zID0gMTsKICAgIHdoaWxlIChiKSB7CiAgICAgICAgaWYgKGIgJiAxKSBhbnMgKj0gYTsKICAgICAgICBiID4+PSAxOwogICAgICAgIGEgKj0gYTsKICAgIH0KICAgIHJldHVybiBhbnM7Cn0KCmxsIHBvdyhsbCBhLCBsbCBiLCBsbCBjKSB7CiAgICBsbCBhbnMgPSAxOwogICAgd2hpbGUgKGIpIHsKICAgICAgICBpZiAoYiAmIDEpIGFucyA9IChhbnMgKiBhKSAlIGM7CiAgICAgICAgYiA+Pj0gMTsKICAgICAgICBhID0gKGEgKiBhKSAlIGM7CiAgICB9CiAgICByZXR1cm4gYW5zOwp9Cgp2ZWN0b3I8bGw+IHNlaXZlb2ZlcmFzdGhvbmVzKGxsIG4pCnsKICAgIHZlY3Rvcjxib29sPiBwcmltZShuICsgMSwgdHJ1ZSk7CiAgICBwcmltZVswXSA9IGZhbHNlOwogICAgcHJpbWVbMV0gPSBmYWxzZTsKICAgIGZvciAoaW50IGkgPSAyOyBpICogaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgaWYgKHByaW1lW2ldKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IGkgKiBpOyBqIDw9IG47IGogKz0gaSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbWVbal0gPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHZlY3RvciA8bGw+IHByaW1lczsKICAgIGZvcihsbCBpICA9IDIgOyBpIDw9IG4gOyBpKyspCiAgICB7CiAgICAgICAgaWYocHJpbWVbaV0pCiAgICAgICAgewogICAgICAgICAgICBwcmltZXMucHVzaF9iYWNrKGkpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBwcmltZXM7Cn0KCnZvaWQgY2hlY2soYm9vbCBiKSB7CiAgICBpZiAoYikKICAgICAgICBjb3V0IDw8ICJZZXNcbiI7CiAgICBlbHNlCiAgICAgICAgY291dCA8PCAiTm9cbiI7Cn0KCi8vIERGUwp2b2lkIGRmcyh2ZWN0b3I8dmVjdG9yPGxsPj4gJmFkaiAsIHZlY3RvciA8Ym9vbD4gJnZpc2l0ZWQgLCBsbCBzKQp7CiAgICBpZih2aXNpdGVkW3NdKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZpc2l0ZWRbc10gPSB0cnVlOwogICAgZm9yKGF1dG8gdSA6IGFkaltzXSkKICAgIHsKICAgICAgICBkZnMoYWRqLHZpc2l0ZWQsdSk7CiAgICB9Cn0KCi8vIEJGUwovLyBxdWV1ZSA8bGw+IHE7Ci8vIHZlY3RvciA8Ym9vbD4gdmlzaXRlZChuKzEsZmFsc2UpOwovLyB2ZWN0b3IgPGxsPiBkaXN0YW5jZShuKzEsMCk7Ci8vIHZpc2l0ZWRbeF0gPSB0cnVlOwovLyBkaXN0YW5jZVt4XSA9IDA7Ci8vIHEucHVzaCh4KTsKLy8gd2hpbGUoIXEuZW1wdHkoKSkKLy8gewovLyAgICAgbGwgcyA9IHEuZnJvbnQoKTsKLy8gICAgIHEucG9wKCk7Ci8vICAgICBmb3IoYXV0byB1OmFkaltzXSkKLy8gICAgIHsKLy8gICAgICAgIGlmKHZpc2l0ZWRbdV0pCi8vICAgICAgICB7Ci8vICAgICAgICAgICBjb250aW51ZTsKLy8gICAgICAgIH0KLy8gICAgICAgIHZpc2l0ZWRbdV0gPSB0cnVlOwovLyAgICAgICAgZGlzdGFuY2VbdV0gPSBkaXN0YW5jZVtzXSArIDE7Ci8vICAgICAgICBxLnB1c2godSk7Ci8vICAgICB9Ci8vIH0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgY291dC50aWUobnVsbHB0cik7CiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIGxsIG47CiAgICAgICAgY2luID4+IG47CiAgICAgICAgdmVjdG9yPGxsPnZlYyhuKTsKICAgICAgICBmb3IoaW50IGkgPSAwIDsgIGkgPCBuIDsgaSsrKQogICAgICAgIHsKICAgICAgICAgICBjaW4gPj4gdmVjW2ldIDsKICAgICAgICB9CiAgICAgICAgdmVjdG9yIDxsbD4gYWxsb3dlZChuKTsKICAgICAgICBmb3IoaW50IGkgPSAwIDsgIGkgPCBuIDsgaSsrKQogICAgICAgIHsKICAgICAgICAgYWxsb3dlZFtpXSA9IGNlaWwoKGRvdWJsZSl2ZWNbaV0vMiktMTsgIAogICAgICAgIH0KICAgICAgICBsbCBjb3VudCA9ICgobikqKG4rMSkpLzI7CiAgICAgICAgLy8gY291dCA8PCBjb3VudCA8PCBlbmRsOwogICAgICAgIGZvcihpbnQgaSA9IDAgOyBpIDwgbiA7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGxsIHRlbXAgPSAwOwogICAgICAgICAgICBmb3IoaW50IGogPSBpKzEgOyBqIDwgbiA7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsbCB0ZW1wMiA9IDA7CiAgICAgICAgICAgICAgICBpZihhbGxvd2VkW2pdID49IChqLWkpKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHRlbXAyID0gai1pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHRlbXAyID0gYWxsb3dlZFtqXTsgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYodGVtcDIgPD0gdGVtcCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZih2ZWNbal0gPD0gdGVtcCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50IC09IG4tajsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB2ZWNbal07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGNvdW50IDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==