#include <bits/stdc++.h>
using namespace std;
const long long MOD = 9e18;
const long long alphabet = 256;
long long arr[300005];
long long dp[300005][2], n;
bool vis[300005][2];
long long dfs(long long idx, long long flag) {
  if (idx == 1) {
    return dp[1][0] = arr[1] + dfs(1 + arr[1], 1);
  } else {
    if (idx <= 0 || idx > n) {
      return 0;
    } else if (dp[idx][flag] != -1 && idx > 0 && idx <= n)
      return dp[idx][flag];
    else if (vis[idx][flag]) {
      return -1e18;
    } else if (flag == 0) {
      vis[idx][flag] = true;
      return dp[idx][flag] = arr[idx] + dfs(idx + arr[idx], !flag);
    } else {
      vis[idx][flag] = true;
      return dp[idx][flag] = arr[idx] + dfs(idx - arr[idx], !flag);
    }
  }
}
int main() {
  memset(dp, -1, sizeof(dp));
  cin >> n;
  for (long long i = 2; i <= n; i++) cin >> arr[i];
  for (long long i = 1; i <= n - 1; i++) {
    arr[1] = i;
    long long ans = dfs(1, 0);
    if (ans <= 0)
      cout << -1 << endl;
    else
      cout << ans << endl;
  }
}
