#include <bits/stdc++.h>
using namespace std;
int arr[200005], N, nState, anVisited[2][200005];
long long memo[2][200005];
long long dfs(int i, bool dir) {
  if (i <= 0 || i > N) return 0;
  if (anVisited[dir][i] == nState) return -1;
  anVisited[dir][i] = nState;
  if (memo[dir][i] != 0) return memo[dir][i];
  const long long r = dfs(i + arr[i] * (dir ? -1 : 1), !dir);
  return memo[dir][i] = r == -1 ? -1 : arr[i] + r;
}
void fast() {
  cin >> N;
  for (int i = 2; i <= N; i += 1) cin >> arr[i];
  for (int i = 1; i < N; i += 1) {
    anVisited[true][1] = nState = i;
    long long r = dfs(1 + i, true);
    if (r == -1)
      cout << -1 << '\n';
    else
      cout << r + i << '\n';
  }
}
int main(int argc, char **argv) {
  ios_base::sync_with_stdio(false), cin.tie(0);
  fast();
  return 0;
}
