#include <bits/stdc++.h>
using namespace std;
const int maxn = (int)(2e5 + 123);
const long long inf = (long long)(2e18);
int n, X;
long long a[maxn], dp[maxn], used[maxn], clr, u[maxn];
void dfs(int v) {
  used[v] = clr;
  int nv = v + a[v], y = a[v];
  if (nv > n) {
    dp[v] = y;
    return;
  }
  y += a[nv], nv -= a[nv];
  if (nv <= 0) {
    dp[v] = y;
    return;
  }
  if (used[nv] == clr || nv == 1 || u[used[nv]] == -1) {
    u[clr] = -1;
    return;
  }
  if (used[nv]) {
    dp[v] = y + dp[nv];
    return;
  }
  dfs(nv);
  dp[v] = y + dp[nv];
}
int main() {
  ios_base ::sync_with_stdio(false);
  cin >> n;
  for (int i = 2; i <= n; ++i) {
    cin >> a[i];
  }
  for (int i = 2; i <= n; ++i) {
    clr = i;
    dfs(i);
  }
  for (int i = 1; i < n; ++i) {
    int x = 1, y = 0;
    x += i, y += i;
    y += a[i + 1], x -= a[i + 1];
    if (x <= 0)
      cout << y << endl;
    else {
      if (x == 1 || u[used[x]] == -1)
        cout << -1 << endl;
      else
        cout << dp[x] + y << endl;
    }
  }
  return 0;
}
