#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; ++i) cin >> a[i];

    if (n <= 1) {
        cout << 0 << '\n';
        return 0;
    }

    int steps = 0, end = 0, far = 0;
    for (int i = 0; i < n - 1; ++i) {
        if (i > far) {                // 已经跳不到当前位置了
            cout << -1 << '\n';
            return 0;
        }
        far = max(far, i + a[i]);     // 下一跳的最远可达
        if (i == end) {               // 需要进行一次跳跃,扩展区间
            ++steps;
            end = far;
            if (end >= n - 1) break;  // 已覆盖终点
        }
    }
    cout << (end >= n - 1 ? steps : -1) << '\n';
    return 0;
}