// https://szkopul.edu.pl/problemset/problem/GaEXAH5Qch_5uUAmF7FtwmMt/site/?key=statement
// OIG XIV (2 etap)
#include <algorithm>
#include <iostream>
#include <queue>
#include <vector>
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int n;
std::cin >> n;
std::vector<int> v(n);
for (int i = 0; i < n; i++) {
std::cin >> v[i];
}
v.push_back(-1);
std::priority_queue<int> q;
int ans = 1;
int sum = v[0] + 1;
if (sum >= n) {
std::cout << ans << '\n';
return 0;
}
for (int i = 1; i <= sum; i++) {
q.push(v[i]);
}
int h = -1;
while (sum < n) {
int r = q.top();
q.pop();
h = sum + 1;
sum += r + 1;
for (int i = h; i <= std::min(sum, n); i++) {
q.push(v[i]);
}
ans++;
}
std::cout << ans << '\n';
return 0;
}