#include<bits/stdc++.h>
using namespace std;
int a[100001];
long long qz[100001];
int bj=1;
long long jy[100001];
long long jy1[100001];
long long b[100001];
long long js;
int n;
void read(int &x)
{
x=0;
char ch=getchar();
while(ch>'9'||ch<'0')
{
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x*=10;
x+=ch-'0';
ch=getchar();
}
}
void dfs(int i,long long zs)
{
if(jy[i]==-1)
{
jy[i]=zs;
jy1[i]=bj;
}
else if(zs<=jy[i]&&bj<=jy1[i])
{
return;
}
if(bj<i||i>n)
{
js=max(zs,js);
return;
}
if(zs+qz[n]-qz[i-1]<=js)
{
return;
}
if(a[i]>n)
{
zs+=(qz[n]-qz[i]);
js=max(zs,js);
return;
}
if(a[i]!=0){
dfs(i+1,zs+a[i]);
if(bj<a[i]+i){
int z=bj;
bj=i+a[i];
dfs(i+1,zs);
bj=z;
}
}
else
{
dfs(i+1,zs+a[i]);
}
}
int main()
{
int T;
read(T);
for(int i=1;i<=T;i++)
{
js=0;
read(n);
for(int i=1;i<=n;i++)
{
jy[i]=-1;
jy1[i]=-1;
read(a[i]);
qz[i]=a[i]+qz[i-1];
}
dfs(1,0);
printf("%lld\n",js);
}
return 0;
}