#include <iostream>
#include <string>
#include <vector>

using namespace std;

unsigned long longest(vector<unsigned long> &ps, vector<bool> &seen, unsigned long pos=0) {
	unsigned long res = pos;
	if (seen[pos]) return res;
	seen[pos] = true;
	for (unsigned long i=0; i<ps.size(); ++i) {
		if (i==pos) continue;
		unsigned long d;
		if (i<pos) d = pos-i;
		else d = i - pos;
		if (ps[i]+ps[pos] == d) {
			unsigned long r = longest(ps, seen, i);
			if (r > res) res = r;
		}
	}
	return res;
}

int main() {
	int num;

	while (cin >> num) {
		if (num == 0)
			break;
		vector<unsigned long> ps;
		vector<bool> seen;
		for (int i = 0; i < num; ++i) {
			ps.push_back(0);
			cin >>ps.back();
			seen.push_back(false);
		}
		//for (vector<unsigned long>::iterator i=ps.begin();i!=ps.end();++i)
		//	cout << *i << " ";
		cout << longest(ps, seen);
		cout << endl;
	}

	return 0;
}