#include <bits/stdc++.h>
using namespace std;
int a[200010], n;
long long ans[200010][2];
bool vis[200010][2];
long long dfs(int x, int st) {
  if (x < 0 || x >= n) return 0;
  if (vis[x][st]) return ans[x][st];
  vis[x][st] = true;
  if (st == 0) {
    long long m = dfs(x + (long long)a[x], 1);
    if (m == -1) return ans[x][st] = -1;
    return ans[x][st] = m + (long long)a[x];
  } else {
    long long m = dfs(x - (long long)a[x], 0);
    if (m == -1) return ans[x][st] = -1;
    return ans[x][st] = m + (long long)a[x];
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) scanf("%d", &a[i]);
  memset(vis, 0, sizeof(vis));
  memset(ans, -1, sizeof(ans));
  for (int i = 1; i < n; i++) {
    vis[0][0] = vis[0][1] = false;
    ans[0][0] = ans[0][1] = -1;
    a[0] = i;
    long long m = dfs(i, 1);
    if ((m == -1))
      cout << -1 << endl;
    else
      cout << dfs(i, 1) + (long long)i << endl;
  }
  return 0;
}
