#include <bits/stdc++.h>
using namespace std;
const long long INF = (1LL) << 53;
long long a[200010], dp[200010][2];
int n;
long long dfs(int x, int flag) {
  if (x <= 0 || x > n) return 0;
  if (dp[x][flag] != -INF) return dp[x][flag];
  dp[x][flag] = INF;
  int next = flag ? x - a[x] : x + a[x];
  return dp[x][flag] = dfs(next, !flag) + a[x];
}
int main() {
  while (~scanf("%d", &n)) {
    for (int i = 2; i <= n; i++) scanf("%I64d", &a[i]);
    for (int i = 0; i <= n; i++) {
      dp[i][0] = dp[i][1] = -INF;
    }
    for (int i = 1; i < n; i++) {
      long long ans = dfs(i + 1, 1);
      if (ans > INF)
        printf("-1\n");
      else
        printf("%I64d\n", ans + i);
    }
  }
  return 0;
}
