#include <bits/stdc++.h>   using namespace std;   int const N = 2 * 1e5 + 5;   int ans = 0;   int i, j, n, m, k, z, y, x, t, mi, ma;   long long a[N];   long long dp[N][2], d[N][2];   char st[N];   long long poisk(int x, int t) {     if (dp[x][t] != 0) return dp[x][t];     long long y = x;     d[x][t]++;     if (d[x][t] > 1) {       d[x][t] = -1;       return d[x][t];     }     if (t == 0)       y += a[x];     else       y -= a[x];     if (y < 1 || y > n) {       dp[x][t] = a[x];       return dp[x][t];     }     long long z = poisk(y, 1 - t);     if (z > 0)       dp[x][t] = a[x] + z;     else       dp[x][t] = -1;     return dp[x][t];   }   int main() {     scanf( %d , &n);     for (i = 2; i <= n; i++) scanf( %I64d , &a[i]);     for (i = 1; i < n; i++) {       a[1] = i;       d[1][0] = 0;       long long k = poisk(1 + i, 1);       if (k > 0) k += i;       printf( %I64d n , k);     }   }   