#include <iostream>
#include <set>
#include <queue>
#include <vector>

using namespace std;

int main ( void )
{
	long long int N; 
	while ( cin >> N && N != 0 ) {
		vector<long long int> nums;
		for ( long long int n = 0; n < N; n++ ) {			
			long long int x; cin >> x;
			nums.push_back( x );
		}
		
		vector<set<long long int> > to( N, set<long long int>() );
		vector<set<long long int> > from( N, set<long long int>() );
		
		for ( long long int n = 0; n < N; n++ ) {
			if ( n + nums[ n ] < N ) {
				to[ n + nums[ n ] ].insert( n );
			}
			if ( n - nums[ n ] >= 0 ) {
				from[ n - nums[ n ] ].insert( n );
			}
		}
		
		vector<long long int> visited( N, 0 );
		queue<long long int> q; q.push( 0 ); visited[ 0 ] = 1;
		
		while ( !q.empty() ) {
			long long int pos = q.front();
			q.pop();
			
			if ( pos + nums[ pos ] < N ) {
				for ( auto t : from[ pos + nums[ pos ] ] ) {
					if ( !visited[ t ] ) {
						q.push( t );
					}
					
					visited[ t ] = 1;
				}
			}
			
			if ( pos - nums[ pos ] >= 0 ) {
				for ( auto t : to[ pos - nums[ pos ] ] ) {
					if ( !visited[ t ] ) {
						q.push( t );
					}
					
					visited[ t ] = 1;
				}
			}
		}
		
		for ( long long int n = N - 1; n >= 0; n-- ) {
			if ( visited[ n ] ) {
				cout << n << endl;
				break;
			}
		}
	}
	
	return 0;
}