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

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

using namespace std;

int solve()
{
	// dfs
	stack<int> s;
	s.push( 0 );
	while(! s.empty() )
	{
		int next = s.top(); s.pop();
		if( vis[next] ) continue;
		vis[next] = true;
		int to = next - mn;
		//printf("%d %d\n", max(next - mx, 0), to )-data[next];
		for( int i = max(next - mx-data[next], 0); i <= to; ++ i)
		{
			if( abs( next - i ) == data[i] + data[next] )
				s.push(i);
		}
		
		to = min( next + mx, n -1) + data[next];
		//printf("%d %d\n", min(next + mn, n-1), to );
		for( int i = min(next + mn+data[next], n-1); i <= to; ++ i)
		{
			if( abs( next - i ) == data[i] + data[next] )
				s.push(i);
		}
		
	}		
	
	// return res
	for( int i = n-1; i >= 0; -- i)
		if( vis[i] ) return i;
	return 0;
}

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;
}