Farmer John has just given the cows a program to play with! The program contains two integer variables, *x* and *y*, and performs the following operations on a sequence *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> of positive integers:
 1.  Initially, *x* = 1 and *y* = 0. If, after any step, *x* ≤ 0 or *x* &gt; *n*, the program immediately terminates. 1.  The program increases both *x* and *y* by a value equal to *a*<sub class="lower-index">*x*</sub> simultaneously. 1.  The program now increases *y* by *a*<sub class="lower-index">*x*</sub> while decreasing *x* by *a*<sub class="lower-index">*x*</sub>. 1.  The program executes steps 2 and 3 (first step 2, then step 3) repeatedly until it terminates (it may never terminate). So, the sequence of executed steps may start with: step 2, step 3, step 2, step 3, step 2 and so on. 
The cows are not very good at arithmetic though, and they want to see how the program works. Please help them!

You are given the sequence *a*<sub class="lower-index">2</sub>, *a*<sub class="lower-index">3</sub>, ..., *a*<sub class="lower-index">*n*</sub>. Suppose for each *i* (1 ≤ *i* ≤ *n* - 1) we run the program on the sequence *i*, *a*<sub class="lower-index">2</sub>, *a*<sub class="lower-index">3</sub>, ..., *a*<sub class="lower-index">*n*</sub>. For each such run output the final value of *y* if the program terminates or -1 if it does not terminate.
The first line contains a single integer, *n* (2 ≤ *n* ≤ 2·10<sup class="upper-index">5</sup>). The next line contains *n* - 1 space separated integers, *a*<sub class="lower-index">2</sub>, *a*<sub class="lower-index">3</sub>, ..., *a*<sub class="lower-index">*n*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>).
from collections import defaultdict
from collections import deque
from functools import lru_cache
import heapq
from locale import resetlocale
import sys 
import random
import math
#parse a single integer
def inp():
    return(int(input()))
#parse a list of integers
def inlt():
    return(list(map(int,input().split())))
#parse a string (can be modified to parse a list of characters)
def insr():
    s = input()
    return(s)
#no idea what this does
def invr():
    return(map(int,input().split()))
# z = inp()

for q in range(1, 2):
    n = inp()
    nums = inlt()
    vals = [[-1] * n for i in range(2)]
    visited = set()

    @lru_cache(None)
    def dp(i, mode, val, prev):
        
        if(i < 0 or i >= n - 1):
            return val
        if(prev == nums[i]):
            return -1
        if(mode):
            res =  dp(i-nums[i], 0, val + nums[i], nums[i])
            vals[1][i] = res
            return res
        else:
            res =  dp(i+nums[i], 1, val + nums[i], nums[i])
            vals[0][i] = res 
            return res 

    for i in range(n-1):
        dp(i,0,0,-1)
        dp(i,1,0,-1)

        # print(vals)

    for i in range(n-1):
        print(vals[1][i] + i + 1)

