<pre>import sys


def recurse(i, l, nodes):
    m = i
    if i in nodes: return 0
    nodes.add(i)
    for j in range(0, len(l)):
        if i != j and l[i] + l[j] == abs(j - i):
            m = max(m, recurse(j, l, nodes))
    return m

while 1:
    n = int(input())
    if n==0: break
    l = [int(i) for i in input().split()]

    # TODO: REAKTOR FAGOTRY
    # TODO: fikslejtr


    poile1 = {}
    poile2 = {}
    for i in range(0, len(l)):
        ii = i - l[i]
        if not ii in poile1:
            poile1[ii] = []
        poile1[ii].append(i)
        jj = i + l[i]
        if not jj in poile2:
            poile2[jj] = []
        poile2[jj].append(i)

    visited = set()
    nodes = set()
    nodes.add(0)
    m = 0
    while nodes:
        i = nodes.pop()
        if i in visited: continue
        visited.add(i)
        m = max(m, i)
        for j in poile1.get(i + l[i], []) + poile2.get(i - l[i],[]):
            if i != j and l[i] + l[j] == abs(j - i):
                nodes.add(j)


    print(m)

        

</pre>
