#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
#define int long long
#define ALL(x) (x).begin(), (x).end()
#define MAX(x) *max_element(ALL(x))
#define MIN(x) *min_element(ALL(x))
typedef pair<int, int> PI;
typedef pair<int, pair<int, int>> PII;
static const int INF = 1010000000000000017LL;
static const double eps = 1e-12;
static const double pi = 3.14159265358979323846;
static const int dx[4] = {1, -1, 0, 0};
static const int dy[4] = {0, 0, 1, -1};
static const int ddx[8] = {1, -1, 0, 0, 1, 1, -1, -1};
static const int ddy[8] = {0, 0, 1, -1, 1, -1, 1, -1};
template <class T>
inline bool chmin(T& a, T b) {
if (a > b) {
a = b;
return true;
}
return false;
}
template <class T>
inline bool chmax(T& a, T b) {
if (a < b) {
a = b;
return true;
}
return false;
}
int N;
signed main() {
cin >> N;
vector<int> A(N + 1);
vector<int> B(N + 5);
for (int i = 1; i <= N; ++i) {
cin >> A[i];
B[i] = A[i] + i - 1;
}
auto op = [](int a, int b) { return max(a, b); };
auto e = []() { return -INF; };
segtree<int, op, e> seg(B);
int k = 1;
while (k <= N) {
int h = A[k];
int r = k + h - 1;
int ma = seg.prod(1, r + 1);
// cout << "r: " << r << endl;
// cout << "ma: " << ma << endl;
if (ma == k || ma >= N) {
k = ma;
break;
}
k = ma;
}
int ans = min(k, N);
cout << ans << endl;
}