#include <bits/stdc++.h>
using namespace std;
long long dp[200010][2];
int vis[200010][2], goal;
long long a[200010], n;
long long dfs(long long pos, int st) {
  if (pos <= 0 || pos > n) return 0;
  if (dp[pos][st] != -1) return dp[pos][st];
  if (vis[pos][st] == goal) return -2;
  vis[pos][st] = goal;
  if (st == 0) {
    long long ans = dfs(pos + a[pos], st ^ 1);
    if (ans == -2)
      dp[pos][st] = -2;
    else
      dp[pos][st] = a[pos] + ans;
  } else {
    long long ans = dfs(pos - a[pos], st ^ 1);
    if (ans == -2)
      dp[pos][st] = -2;
    else
      dp[pos][st] = a[pos] + ans;
  }
  return dp[pos][st];
}
int main() {
  cin >> n;
  memset(dp, -1, sizeof(dp));
  memset(vis, 0, sizeof(vis));
  for (int i = 2; i <= n; i++) cin >> a[i];
  dp[0][1] = -2;
  for (int i = 1; i < n; i++) {
    a[1] = i;
    goal = i;
    long long ans = dfs(i + 1, 1);
    if (ans == -2)
      cout << -1 << endl;
    else
      cout << ans + i << endl;
  }
  return 0;
}
