#include <bits/stdc++.h>
using namespace std;
const int MAXN = 300000;
int n;
int a[MAXN];
long long d[MAXN][2];
bool w[MAXN][2];
long long dfs(int u, int k) {
  if (u < 0 || u >= n) return 0;
  if (w[u][k]) return d[u][k];
  w[u][k] = 1;
  d[u][k] = -1;
  if (k == 0) {
    int next = u + a[u];
    long long v = dfs(next, 1);
    if (v != -1) v += a[u];
    d[u][k] = v;
  } else {
    int next = u - a[u];
    long long v = dfs(next, 0);
    if (v != -1) v += a[u];
    d[u][k] = v;
  }
  return d[u][k];
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) scanf("%d", a + i);
  for (int i = 1; i < n; i++) {
    long long x = dfs(i, 1);
    if (x != -1) x += i;
    printf("%I64d\n", x);
  }
  return 0;
}
