#include <bits/stdc++.h>
using namespace std;
const int MN = 2 * 100 * 1000 + 5;
int n;
int arr[MN];
long long ans1[MN];
long long ans2[MN];
bool used1[MN];
bool used2[MN];
long long rec(long long x, bool is1) {
  if (is1) {
    if (used1[x]) return ans1[x];
    used1[x] = true;
    long long nx;
    nx = x + arr[x];
    if (nx > n) {
      ans1[x] = arr[x];
      return ans1[x];
    } else {
      if (!used2[nx]) {
        ans1[x] = rec(nx, false);
        if (ans1[x] != -1) ans1[x] += arr[x];
        return ans1[x];
      } else {
        ans1[x] = ans2[nx];
        if (ans1[x] != -1) ans1[x] += arr[x];
        return ans1[x];
      }
    }
  } else {
    if (used2[x]) return ans2[x];
    used2[x] = true;
    long long nx;
    nx = x - arr[x];
    if (nx <= 0) {
      ans2[x] = arr[x];
      return ans2[x];
    } else {
      if (!used1[nx]) {
        ans2[x] = rec(nx, true);
        if (ans2[x] != -1) ans2[x] += arr[x];
        return ans2[x];
      } else {
        ans2[x] = ans1[nx];
        if (ans2[x] != -1) ans2[x] += arr[x];
        return ans2[x];
      }
    }
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 2; i <= n; i++) {
    scanf("%d", &arr[i]);
    ans1[i] = -1;
    ans2[i] = -1;
  }
  ans1[1] = -1;
  ans2[1] = -1;
  used1[1] = true;
  used2[1] = true;
  long long ans;
  for (int i = 2; i <= n; i++) {
    ans = rec(i, false);
    if (ans != -1) ans += i - 1;
    printf("%I64d\n", ans);
  }
  return 0;
}
