#include <bits/stdc++.h>
using namespace std;
long long n, dp[200009][2], a[200009], vis[200009][2], z, oo = 1;
long long dfs(long long x, int c) {
  if (x >= n || x < 0) return 0;
  if (x == 0) return -1;
  if (vis[x][c] == oo) return dp[x][c];
  if (vis[x][c] == oo + oo) return -1;
  vis[x][c] = 2;
  long long o = 1;
  if (c) o = -1;
  long long w = dfs(x + a[x] * o, 1 - c);
  if (w == -1)
    dp[x][c] = -1;
  else
    dp[x][c] = a[x] + w;
  vis[x][c] = 1;
  return dp[x][c];
}
int main() {
  cin.tie(0);
  cout.tie(0);
  ios::sync_with_stdio(0);
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 1; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 1; i < n; i++) {
    for (int j = 0; j < 2; j++) {
      if (vis[i][j]) continue;
      dfs(i, j);
    }
  }
  long long mi = -1;
  for (long long i = 1; i <= n - 1; i++) {
    if (dp[i][1] != mi)
      cout << dp[i][1] + i << "\n";
    else
      cout << -1 << "\n";
  }
}
