#include <iostream>
//#include <string>
#include <vector>
using namespace std;

int main(void){

string line;
int i, noP;
int *pebbles;
bool *available;
bool *closed;
int open;
vector<int> opened = vector<int>();
//vector<int> closed = vector<int>();
int max;
pebbles = new int[1000000];
available = new bool[1000000];
closed = new bool[1000000];

while(true){
    max=0;
    cin>>noP;
    if(!noP)
        return 0;
    opened.clear();
    for(i=0; i<noP; i++){
        cin>>pebbles[i];
        available[i]=false;
        closed[i]=false;
        if(pebbles[i]>max)
            max=pebbles[i];
    }
    //available[i]=0; ????????
    opened.push_back(0);
    while(opened.size()){
        //cout<<"opened size "<<opened.size();
        open = opened.back();
        opened.pop_back();
        closed[open]=true;
        //available[open]=false;
        for(i=0; open+i<noP && open+max>=i; i++)
            if(pebbles[open]+pebbles[open+i]==i)
                if(!closed[open+i]){
                    available[open+i]=true;
                    opened.push_back(open+i);
                }
    }
    for(i=noP-1; i>0 && !available[i]; i--);
    cout<<i<<endl;
}

delete[] pebbles;
return 0;}