#include <bits/stdc++.h>
using namespace std;
long long i, j, k, l, n, an, sum, tot, s, m;
const long long N = 210000;
long long f[N][2], a[N], g[N], w[N];
bool ff[N][2], ok[N], in[N];
long long e[N][2], v[N][2];
int main() {
  scanf("%I64d", &n);
  for (long long i = 2; i <= n; i++) scanf("%I64d", &a[i]);
  for (long long i = 1; i <= n; i++) e[i][0] = e[i][1] = 1;
  ff[1][0] = ff[1][1] = 1;
  for (long long i = 2; i <= n; i++)
    for (long long t = 0; t < 2; t++)
      if (!ff[i][t]) {
        long long x = i;
        ff[x][t] = true;
        long long l = 1;
        g[1] = x;
        w[l] = t;
        long long s = 0;
        long long tt = t;
        long long over;
        while (true) {
          if (!tt) {
            s += a[x];
            x += a[x];
            if ((x < 1) || (x > n)) break;
            if (ff[x][1]) {
              over = e[x][1];
              s += v[x][1];
              break;
            }
            g[++l] = x;
            w[l] = 1 - tt;
            ff[x][1] = true;
          } else {
            s += a[x];
            x -= a[x];
            if ((x < 1) || (x > n)) break;
            if (ff[x][0]) {
              over = e[x][0];
              s += v[x][0];
              break;
            }
            g[++l] = x;
            w[l] = 1 - tt;
            ff[x][0] = true;
          }
          tt = 1 - tt;
        }
        if ((x < 1) || (x > n)) over = n + 1;
        long long ss = 0;
        for (long long j = 1; j <= l; j++)
          e[g[j]][w[j]] = over, v[g[j]][w[j]] = s - ss, ss += a[g[j]];
      }
  memset(ff, false, sizeof(ff));
  for (long long i = 1; i < n; i++) {
    a[1] = i;
    if (e[1 + i][1] == 1)
      printf("-1\n");
    else
      printf("%I64d\n", i + v[1 + i][1]);
  }
  return 0;
}
