func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, a[200000];   bool st[200000][2];   long long memo[200000][2];   long long solve(int node, int rev) {     if (node < 0 || node >= n) return 0;     if (st[node][rev]) return 0x3f3f3f3f3f3f3f3fll;     if (node == 0) return 0;     long long& val = memo[node][rev];     if (val != 0xc0c0c0c0c0c0c0c0ll) return val;     st[node][rev] = true;     val = solve(node + a[node] * (1 - 2 * rev), 1 - rev);     if (val != 0x3f3f3f3f3f3f3f3fll) val += a[node];     st[node][rev] = false;     return val;   }   int main() {     ios::sync_with_stdio(0);     memset(st, false, sizeof st);     memset(memo, 0xc0c0c0c0c0c0c0c0ll, sizeof memo);     cin >> n;     for (int i = 1; i < n; ++i) cin >> a[i];     for (int i = 1; i < n; ++i) {       st[0][0] = true;       long long ans = solve(i, 1);       if (ans == 0x3f3f3f3f3f3f3f3fll)         ans = -1;       else         ans += i;       cout << ans << endl;     }   }   