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

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

using namespace std;

typedef long long ll;

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

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

	return 0;
}