#include <cstdio>
#include <cstring>
#include<vector>
#include<map>
#include<queue>
using namespace std;

char line[100005];

int main(void)
{
    int n;
    while(scanf("%d",&n)==1 && n!=0){
        vector<int>V(n+47,0);
        for(int i=0; i<n; i++){
            scanf("%d",&V[i]);
        }

        map<int,vector<int>>M;
        M[V[0]].push_back(0);

        vector<vector<int>>G(n+47);

        for(int i=1; i<n; i++){
            for(auto it=M[i-V[i]].begin(); it!=M[i-V[i]].end(); it++){
                G[i].push_back(*it);
                G[*it].push_back(i);
            }
            M[V[i]+i].push_back(i);
        }

        int last=0;
        vector<int>visited(n+47,0);

        queue<int>Q;
        Q.push(0);
        while(Q.size()>0){
            int v=Q.front(); Q.pop();
            if(visited[v])continue;

            visited[v]=1;
            last = max(last,v);

            for(int i=0; i<G[v].size(); i++)
                Q.push(G[v][i]);

        }
        printf("%d\n",last);

    }



}