import bisect

MAX_INT = -1

def do_it(tab):
    mapka = {}
    for i in range(0, 10):
        mapka[i] = []

    sum = 0
    for i in range(len(tab)):
        sum += tab[i]
        sum %= 10
        mapka[sum].append(i)

    previous_sum = 0
    results = []
    for i in range(len(tab)):
        q = (10 - previous_sum) % 10
        kek = bisect.bisect_left(mapka[q], i)
        if (kek >= len(mapka[q])):
            results.append(MAX_INT)
        else:
            results.append(abs(mapka[q][kek] - i + 1)) 
        previous_sum -= tab[i]
    return results


n = input()
tab = input().split()
tab = list(map(lambda a: int(a), tab))
# tab = [5, 5, 5, 0, 5]
standard = do_it(tab)
# reversed = do_it(tab[::-1])[::-1]

for i in range(len(tab)):
    # if standard[i] == MAX_INT and reversed[i] == MAX_INT:
        # print(-1, end=' ')
    # else:
        # print(min(standard[i], reversed[i]))
    print(standard[i], end=' ')
print()