#include <bits/stdc++.h>
using namespace std;
long long arr[212345];
long long num[212345][3], N, ans;
bool stu[212345][3];
long long DFS(long long x, long long y, int tab) {
  if (x <= 0 || x > N) return 0;
  if (num[x][tab]) return num[x][tab];
  if (stu[x][tab]) return num[x][tab] = -1;
  stu[x][tab] = true;
  if (!tab) {
    long long t = DFS(x - arr[x], y + arr[x], 1);
    if (t != -1) return num[x][0] = t + arr[x];
    return num[x][0] = -1;
  }
  long long t = DFS(x + arr[x], y + arr[x], 0);
  if (t != -1) return num[x][1] = t + arr[x];
  return num[x][1] = -1;
}
int main() {
  int i, x, y;
  scanf("%I64d", &N);
  for (i = 2; i <= N; i++) scanf("%I64d", &arr[i]);
  for (i = 1; i < N; i++) {
    arr[1] = i;
    x = 1 + i;
    y = i;
    ans = -1;
    long long t = DFS(x, y, 0);
    if (t == -1)
      puts("-1");
    else
      printf("%I64d\n", t + i);
  }
  return 0;
}
