#import <stdio.h>
#import <queue>
#import <cmath>

using namespace std;

int main() {
	int N;
	
	while (1) {
		bool poleA[1000000];
		int pocty[1000000];
		queue<int> front;
		int pom;
		int pomK;
		int max = 1;

		N = 0;

		scanf("%d", &N);
		if (N == 0) return 0;

		for (int i = 0; i < N; i++) {
			scanf("%d", pocty + i);
			poleA[i] = 0;
		}

		front.push(0);
		poleA[0] = 1;

		while (!front.empty()) {
			pom = front.front();
			front.pop();
			pomK = pocty[pom];

			for (int i = pom + pomK; i < N; i++) {
				if (pocty[i] + pomK == abs(i - pom) && poleA[i] == 0) {
					poleA[i] = 1;
					front.push(i);
					if (i + 1 > max) max = i + 1;
				}
			}

			for (int i = pom - pomK; i >= 0; i--) {
				if (pocty[i] + pomK == abs(i - pom) && poleA[i] == 0) {
					poleA[i] = 1;
					front.push(i);
					if (i > max) max = i;
				}
			}
		}

		/*for (int i = N - 1; i >= 0; i--)
		{
			if (poleA[i] != 0) {
				printf("%d\n", i);
				break;
			}
		}*/
		printf("%d\n", max - 1);
	}

	return 0;
}

Diff to submission s1166