#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