#include <cstdio>
#include <stack>
#include <climits>
#include <algorithm>
#include <cmath>

int data[1000000];
int s[1000000];
bool vis[1000000];
int mn, mx, m, n;

using namespace std;

int solve()
{
	// dfs
	int res = 0, top = 0;
	s[top++] = 0;
	while( top )
	{
		int next = s[--top];
		res = max(res, next);
		vis[next] = true;
		int to = next - mn;
		for( int i = max(next - mx-data[next], 0); i <= to; ++ i)
		{
			if( abs( next - i ) == data[i] + data[next] && !vis[i] )
				s[top++] = i;
		}
		
		to = min( next + mx  + data[next], n -1);
		for( int i = min(next + mn+data[next], n-1); i <= to; ++ i)
		{
			if( abs( next - i ) == data[i] + data[next] && !vis[i] )
				s[top++] = i;
		}
		
	}		
	
	// return res
	return res;
}

int main()
{
	while( scanf("%d", &n) && n )
	{
		mn = INT_MAX; mx = 0;
		for( int i = 0; i < n; ++ i)
		{
			scanf("%d", data + i);
			mn = min( data[i], mn);
			mx = max( data[i], mx);
			vis[ i ] = 0;
		}
		
		printf( "%d\n", solve());
	}

	return 0;
}