#include <bits/stdc++.h>
using namespace std;
struct debugger {
  template <typename T>
  debugger& operator,(const T& v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
void debugarr(int* arr, int n) {
  cout << "[";
  for (int i = 0; i < n; i++) cout << arr[i] << " ";
  cout << "]" << endl;
}
long long dp[2][200010];
int vis[2][200010];
int arr[200010];
int n;
long long fun(int op, int x) {
  if (x <= 0 || x > n) return 0;
  if (op == 1 && x == 1) return -(1LL << 50);
  if (dp[op][x] != 0) return dp[op][x];
  if (vis[op][x] == 1) return dp[op][x] = -(1LL << 50);
  vis[op][x] = 1;
  return dp[op][x] = (arr[x] + fun(op ^ 1, x + arr[x] * (op == 0 ? 1 : -1)));
}
int main() {
  cin >> n;
  for (int i = 0; i <= (int)n - 1 - 1; i++) cin >> arr[i + 2];
  memset(dp, 0, sizeof dp);
  memset(vis, 0, sizeof vis);
  for (int i = 1; i <= (int)n - 1; i++) {
    vis[0][1] = 1;
    long long qw = fun(1, i + 1);
    if (qw < 0)
      cout << -1 << endl;
    else
      cout << qw + (i) << endl;
  }
  return 0;
}
