#include <cstdio>
#include <vector>
#include <cmath>
#include <iostream>

int main()
{
	int n;
	while(scanf("%d\n", &n) == 1)
	{
		if(n == 0)
		{
			break;
		}

		std::vector<int> pebbles(n);
		for(int i = 0; i < n; ++i)
		{
			scanf("%d", &pebbles[i]);
		}


		std::vector<int> discovered(n);
		std::vector<bool> reachable(n);


		discovered.push_back(0);
		reachable[0] = true;

		int max = 0;
		while (!discovered.empty())
		{
			int last = discovered.back();

			//std::clog << "jump from " << last ;
			discovered.pop_back();
			for( int i = 0; i < n; i++) {
				if (reachable[i])
				{
					continue;
				}
				//std::clog << " to " << i << std::endl;
				if(pebbles[i] + pebbles[last] == std::abs(last - i)) {
					discovered.push_back(i);
					reachable[i] = true;
					if (i > max) {
						max = i;
					}
				}
			}
		}






		/*for(int i = 0; i < n - 1; ++i)
		{
			if (!reachable[i]) {
				continue;
			}

			for(int j = 0; j < n; ++j)
			{
				if (pebbles[i] + pebbles[j] == std::abs(j - i)){
					// skokujem
					reachable[j] = true;
					changed = true;
					std::clog << "can reach now " << i << std::endl;
				} else {
					//kopĂ­rujem
				}

			}

			if (!changed) {
				break;
			}
		}*/

		/*int max = 0;
		for(int i = n - 1; i >= 0; --i) {
			if( max != reachable[i] )
			{
				max = i;
				break;
			}
		}*/

		printf("%d\n", max);
	}
}