#include <bits/stdc++.h>
using namespace std;
int frogs(int N, vector<int> arr)
{
if (N <= 1) return 0;
if (arr[0] == 0) return -1;
int maxReach = arr[0];
int step = arr[0];
int jump = 1;
int i = 1;
for (i = 1; i < N+1; i++) {
if (i == N) return jump;
maxReach = max(maxReach, i + arr[i]);
step--;
if (step == 0) {
jump++;
if (i >= maxReach) return -1;
step = maxReach - i;
}
}
return -1;
}
int main() {
int n;
cin>>n;
vector<int> arr(n);
for(int i=0;i<n;i++)
cin>>arr[i];
int result = frogs(n,arr);
cout<<result;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZnJvZ3MoaW50IE4sIHZlY3RvcjxpbnQ+IGFycikKewogICAgaWYgKE4gPD0gMSkgcmV0dXJuIDA7CiAgICBpZiAoYXJyWzBdID09IDApIHJldHVybiAtMTsKICAgIAogICAgaW50IG1heFJlYWNoID0gYXJyWzBdOwogICAgaW50IHN0ZXAgPSBhcnJbMF07CiAgICBpbnQganVtcCA9IDE7CiAgICBpbnQgaSA9IDE7CiAgICBmb3IgKGkgPSAxOyBpIDwgTisxOyBpKyspIHsKICAgICAgICBpZiAoaSA9PSBOKSByZXR1cm4ganVtcDsKICAgICAgICBtYXhSZWFjaCA9IG1heChtYXhSZWFjaCwgaSArIGFycltpXSk7CiAgICAgICAgc3RlcC0tOwogICAgICAgIGlmIChzdGVwID09IDApIHsKICAgICAgICAgICAganVtcCsrOwogICAgICAgICAgICBpZiAoaSA+PSBtYXhSZWFjaCkgcmV0dXJuIC0xOwogICAgICAgICAgICBzdGVwID0gbWF4UmVhY2ggLSBpOwogICAgICAgIH0KICAgIH0KIAogICAgcmV0dXJuIC0xOwp9CmludCBtYWluKCkgewoJaW50IG47CgljaW4+Pm47Cgl2ZWN0b3I8aW50PiBhcnIobik7Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJCWNpbj4+YXJyW2ldOwoJCglpbnQgcmVzdWx0ID0gZnJvZ3MobixhcnIpOwkKCWNvdXQ8PHJlc3VsdDsKCXJldHVybiAwOwp9