#include #include #include #include #include using namespace std; int main() { int n; unsigned int t; cin >> n; vector sg(n); vector v(n, false); for (int i=0; i q; int i, current, prev, next, m, cnt; cnt = 0; current = 0; prev = 0; next = 0; while (next<=v.size()-1) { prev = current; current = next; v[current] = true; cnt++; next = current + sg[current]; } if (current==v.size()-1) { cout << cnt << endl; return 0; } q.push(prev); while (!q.empty()) { current = q.front(); q.pop(); if (v[current]==false) { v[current] = true; cnt++; } if (v[v.size()-1]==true) break; m = sg[current]; for (i=(m%2==0 ? current : current+1); i<=current+m; i+=2) { if (i<0) continue; if (i>=v.size()) break; if (v[i]==true) continue; q.push(i); } } if (current != v.size()-1) {cout << -1 << endl;} else {cout << cnt << endl;} return 0; }