#include <bits/stdc++.h>
using namespace std;
long long a[200010];
bool vis[200010][2];
long long dp[200010][2];
bool doing[200010][2];
int n;
long long dfs(int x, int y) {
  if (x <= 0 || x > n) return 0;
  if (x == 1 && y == 0) return -1;
  if (vis[x][y]) return dp[x][y];
  vis[x][y] = true;
  dp[x][y] = -1;
  int nx = x;
  if (y == 0)
    nx += a[x];
  else
    nx -= a[x];
  if (dfs(nx, y ^ 1) == -1)
    dp[x][y] = -1;
  else
    dp[x][y] = dfs(nx, y ^ 1) + a[x];
  vis[x][y] = true;
  return dp[x][y];
}
int main() {
  scanf("%d", &n);
  for (int i = 2; i <= n; i++) scanf("%I64d", &a[i]);
  memset(vis, false, sizeof(vis));
  for (int i = 1; i < n; i++) {
    long long ans = dfs(i + 1, 1);
    if (ans == -1)
      printf("-1\n");
    else
      printf("%I64d\n", ans + i);
  }
  return 0;
}
