#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <set>
using namespace std;

#define DEBUG(x) cout << ">" << #x << ": " << x << endl

void f(int cur, const vector<int> & list, set<int> & tabu, int & best) {
	for ( int i = 0 ; i < list.size() ; i++ )
	{
		if ( i == cur || tabu.find(i) != tabu.end() || 
			abs(cur-i) != list[cur]+list[i] )
			continue;
		if ( i == list.size()-1 )
		{
			best = list.size()-1;
			return;
		}
		tabu.insert(i);
		best = max(best, i);
		f(i, list, tabu, best);
	}
}

int main() {
int N;
for ( ;; ) {
	vector<int> list;
	set<int> tabu;
	cin >> N;
	if ( !N )
		break;
	for ( int i = 0 ; i < N ; ++i )
	{
		int x;
		cin >> x;
		list.push_back(x);
	}
	int best = 0;
	f(0, list, tabu, best);
	cout << best << endl;
}
return 0;
}