#include <bits/stdc++.h>
using namespace std;
inline void in(int &n) {
  n = 0;
  int ch = getchar();
  int sign = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') sign = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    n = (n << 3) + (n << 1) + ch - '0', ch = getchar();
  }
  n = n * sign;
}
long long int INFL = 10000000000000000;
bool memo[200005][2];
int dp_bool[200005][2];
int a[200005];
long long int dp[200005][2];
bool func(int pos, int state, int n) {
  if (pos < 1 || pos > n) {
    return true;
  }
  if (dp_bool[pos][state] != 2) {
    return dp_bool[pos][state];
  }
  if (memo[pos][state] == false) {
    memo[pos][state] = true;
  } else {
    return false;
  }
  bool ans;
  if (state == 0) {
    ans = func(pos + a[pos], 1, n);
  } else {
    ans = func(pos - a[pos], 0, n);
  }
  dp_bool[pos][state] = ans;
  return ans;
}
long long int gunc(int pos, int state, int n) {
  if (pos < 1 || pos > n) {
    return 0;
  }
  if (dp[pos][state] != INFL) {
    return dp[pos][state];
  }
  long long int ans = 0;
  if (state == 0) {
    ans += a[pos];
    ans += gunc(pos + a[pos], 1, n);
  } else {
    ans += a[pos];
    ans += gunc(pos - a[pos], 0, n);
  }
  dp[pos][state] = ans;
  return ans;
}
int main() {
  int n;
  in(n);
  for (int i = 2; i <= n; i++) {
    in(a[i]);
  }
  for (int i = 0; i <= 200000; i++) {
    for (int j = 0; j <= 1; j++) {
      dp[i][j] = INFL;
      dp_bool[i][j] = 2;
    }
  }
  for (int i = 1; i < n; i++) {
    a[1] = i;
    memo[1][0] = true;
    memo[1][1] = false;
    bool fnd = func(1 + a[1], 1, n);
    if (fnd == false) {
      printf("-1\n");
      continue;
    }
    long long int ans;
    ans = a[1] + gunc(1 + a[1], 1, n);
    printf("%I64d\n", ans);
  }
  return 0;
}
