#include <bits/stdc++.h>
using namespace std;
const int maxn = 200011;
long long dp[maxn][2], a[maxn];
int n;
bool vist[maxn][2];
long long dfs(int p, int q) {
  if (p <= 0 || p > n) return 0;
  if (p == 1) return -1;
  if (vist[p][q]) return dp[p][q];
  vist[p][q] = 1;
  int tmp1;
  if (!q)
    tmp1 = p + a[p];
  else
    tmp1 = p - a[p];
  long long tmp2 = dfs(tmp1, q ^ 1);
  if (tmp2 == -1)
    dp[p][q] = -1;
  else
    dp[p][q] = tmp2 + a[p];
  return dp[p][q];
}
int main() {
  memset(dp, -1, sizeof(dp));
  scanf("%d", &n);
  for (int i = (2); i <= (n); i++) scanf("%I64d", a + i);
  for (int i = (2); i <= (n); i++) {
    if (!vist[i][0]) dfs(i, 0);
    if (!vist[i][1]) dfs(i, 1);
  }
  for (int i = (1); i <= (n - 1); i++)
    if (dp[i + 1][1] == -1)
      puts("-1");
    else
      printf("%I64d\n", dp[i + 1][1] + i);
  return 0;
}
