#include <bits/stdc++.h>
using namespace std;
int n;
long long DFS(long long x, vector<vector<long long> > &pos,
              vector<long long> &a, int dir) {
  if (x < 1 || n < x) return 0;
  if (pos[x][dir] == -1) return -1;
  if (pos[x][dir] > 0) return pos[x][dir];
  long long n_x = x + a[x] * (2 * dir - 1), n_dir = 1 - dir;
  pos[x][dir] = -1;
  long long r = DFS(n_x, pos, a, n_dir);
  if (r == -1) return -1;
  return pos[x][dir] = a[x] + r;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  vector<long long> a(n + 1, 0);
  for (int i = 2; i <= n; i++) cin >> a[i];
  vector<vector<long long> > pos(n + 1, vector<long long>(2, 0));
  pos[1][1] = -1;
  for (int i = 2; i <= n; i++) {
    long long x = i, y = 0;
    if (pos[i][0] != 0) continue;
    DFS(x, pos, a, 0);
  }
  for (int i = 2; i <= n; i++) {
    if (pos[i][0] == -1)
      cout << -1 << "\n";
    else
      cout << pos[i][0] + i - 1 << "\n";
  }
  return 0;
}
