// #include<bits/stdc++.h>
// using namespace std;

// map<long long ,long long > mp;

// long long maxsum(long long a[],long long n,long long i){
// 	if(mp.count(i+a[i]))return mp[i+a[i]];
// 	if(i+a[i]>=n)return 0;
// 	long long sum = 0;
// 	sum += a[i+a[i]] + maxsum(a,n,i+a[i]);
// 	mp[i]=sum;
// 	return sum;
// }

// int main(){
// 	ios_base::sync_with_stdio(false);  cin.tie(NULL); //cout.tie(NULL);
// 	#ifndef ONLINE_JUDGE
// 	freopen("input.txt", "r", stdin); 
// 	freopen("error.txt", "w", stderr); 
// 	freopen("output.txt", "w", stdout); 
// 	#endif
// 	long long i,j,t=1;	cin>>t;
// 	while(t--){
// 		long long n;cin>>n;
// 		long long a[n];
// 		for(i=0;i<n;i++)cin>>a[i];
// 		long long maxi = 0;
// 		for(i=0;i<n;i++)
// 			maxi = max(maxi,a[i] + maxsum(a,n,i));
// 			mp.clear();
// 		cout<<maxi<<endl;
// 		mp.clear();
// 	}
// 	return 0;
// }

#include<bits/stdc++.h>
using namespace std;

int main(){
	ios_base::sync_with_stdio(false);  cin.tie(NULL); //cout.tie(NULL);
	#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin); 
	freopen("error.txt", "w", stderr); 
	freopen("output.txt", "w", stdout); 
	#endif
	long long i,j,t=1;	cin>>t;
	while(t--){
		long long n;cin>>n;
		long long a[n];
		for(i=0;i<n;i++)cin>>a[i];
		long long dp[n];
		memset(dp,-1,sizeof(dp));
		for(i=n-1;i>=0;i--){
			if(i+a[i]>=n)dp[i]=a[i];
			else dp[i]=a[i]+dp[i+a[i]];
		}
		cout<<*max_element(dp,dp+n)<<endl;
	}
	return 0;
}