#include <bits/stdc++.h>
long long mpow(long long a, long long n, long long mod) {
  long long ret = 1;
  long long b = a;
  while (n) {
    if (n & 1) ret = (ret * b) % mod;
    b = (b * b) % mod;
    n >>= 1;
  }
  return (long long)ret;
}
using namespace std;
long long dp[200002][2];
int n, y = 0;
long long a[200005];
long long vis[200005][2];
long long dfs(int x, int q, int m) {
  if (x <= 0 || x > n) return 0;
  if (dp[x][q] != 0) return dp[x][q];
  if (vis[x][q] == m) return -1e29;
  long long ret = 0;
  if (q == 0) {
    vis[x][0] = m;
    ret += a[x] + dfs(x + a[x], 1, m);
  } else {
    vis[x][1] = m;
    ret += a[x] + dfs(x - a[x], 0, m);
  }
  return dp[x][q] = ret;
}
int main() {
  memset(vis, 0, sizeof(vis));
  memset(dp, 0, sizeof(dp));
  cin >> n;
  int i, j;
  for (j = 2; j <= n; j++) cin >> a[j];
  for (j = 1; j <= n - 1; j++) {
    a[1] = j;
    long long ans = dfs(1, 0, j);
    if (ans < 0)
      cout << -1 << endl;
    else
      cout << ans << endl;
    dp[1][0] = 0;
    y = 0;
  }
  return 0;
}
