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

int main()
{
	std::ios::sync_with_stdio(false);
	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 <= last - pebbles[last]; 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;
						if (max == n - 1) {
							goto end;
						}
					}
				}
			}

			for(int i = pebbles[last] + last; 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;
						if (max == n - 1) {
							goto end;
						}
					}
				}
			}
		}

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