#include <bits/stdc++.h>
const int MN = 2 * 100000 + 100;
bool isCycle[MN][2];
int vis[MN][2], p[MN][2];
long long sum[MN][2];
int a[MN], n;
long long dfs(int u, int s) {
  vis[u][s] = 2;
  sum[u][s] = a[u];
  int nxt = u + (s == 1 ? -a[u] : a[u]);
  if (nxt > 0 && nxt <= n) {
    if (vis[nxt][!s] == -1) {
      sum[u][s] += dfs(nxt, !s);
      isCycle[u][s] = isCycle[nxt][!s];
    } else if (vis[nxt][!s] == 2) {
      isCycle[u][s] = true;
    } else if (vis[nxt][!s] == 1) {
      sum[u][s] += sum[nxt][!s];
      isCycle[u][s] = isCycle[nxt][!s];
    }
  } else
    isCycle[u][s] = false;
  vis[u][s] = 1;
  return sum[u][s];
}
int main() {
  scanf("%d", &n);
  for (int i = (2); i <= (n); i++) scanf("%d", a + i);
  memset(vis, -1, sizeof(vis));
  for (int i = (2); i <= (n); i++)
    for (int j = 0; j < (2); j++)
      if (vis[i][j] == -1) dfs(i, j);
  for (int i = (1); i <= (n - 1); i++) {
    if (isCycle[i + 1][1] || a[i + 1] == i)
      printf("%d\n", -1);
    else
      printf("%I64d\n", i + sum[i + 1][1]);
  }
  return 0;
}
