import sys



sys.setrecursionlimit(10 ** 9)





def rec(arr, l, lst):

    # lstは操作の逆順

    # print(arr, l, lst[::-1])

    if l == 0:

        for p in lst[::-1]:

            print(p)

        exit()

        return



    for i in sorted(list(range(1, l + 1)), reverse=True):

        # 1-indexed

        if arr[i-1] == i:

            # print(aa, '除去')

            # 最後に入れた数は、何番目と数の大きさが一致する

            rec(arr[:i - 1] + arr[i:], l - 1, lst + [i])

        elif arr[i-1] > i:

            # 何番目よりも数が大きい

            return

    return





N = int(eval(input()))

b = list(map(int, input().split()))



rec(b, N, [])



print((-1))

from collections import deque



N = int(eval(input()))

b = list(map(int, input().split()))



# 最後に挿入した数字は

# k番目のkとなる



# 1 2 2 1 2 3 2

# 複数通り該当するときは

# 最後の数が該当する

# 0 0 3 0 0 6

# 3を取り除くと

# 0 0 0 0 6 -> 矛盾



ans = deque()



q = deque(enumerate(b, 1))

r = deque()



flg = False

while q:

    idx, bb = q.pop()

    # print(idx, bb, r)

    if idx == bb:

        ans.appendleft(bb)

        if len(ans) == N:

            flg = True

            break

        q.extend(r)

        r = deque()

    else:

        r.appendleft((idx - 1, bb))



if flg:

    for aa in ans:

        print(aa)

else:

    print((-1))
import sys

sys.setrecursionlimit(10**9)


def rec(arr, l, lst):
    # lstは操作の逆順
    # print(arr, l, lst[::-1])
    if l == 0:
        for p in lst[::-1]:
            print(p)
        exit()
        return
    for i in sorted(list(range(1, l + 1)), reverse=True):
        # 1-indexed
        if arr[i - 1] == i:
            # print(aa, '除去')
            # 最後に入れた数は、何番目と数の大きさが一致する
            rec(arr[: i - 1] + arr[i:], l - 1, lst + [i])
        elif arr[i - 1] > i:
            # 何番目よりも数が大きい
            return
    return


N = int(eval(input()))
b = list(map(int, input().split()))
rec(b, N, [])
print((-1))

from collections import deque

N = int(eval(input()))
b = list(map(int, input().split()))
# 最後に挿入した数字は
# k番目のkとなる
# 1 2 2 1 2 3 2
# 複数通り該当するときは
# 最後の数が該当する
# 0 0 3 0 0 6
# 3を取り除くと
# 0 0 0 0 6 -> 矛盾
ans = deque()
q = deque(enumerate(b, 1))
r = deque()
flg = False
while q:
    idx, bb = q.pop()
    # print(idx, bb, r)
    if idx == bb:
        ans.appendleft(bb)
        if len(ans) == N:
            flg = True
            break
        q.extend(r)
        r = deque()
    else:
        r.appendleft((idx - 1, bb))
if flg:
    for aa in ans:
        print(aa)
else:
    print((-1))

-import sys - -sys.setrecursionlimit(10**9) - - -def rec(arr, l, lst): -    # lstは操作の逆順 -    # print(arr, l, lst[::-1]) -    if l == 0: -        for p in lst[::-1]: -            print(p) -        exit() -        return -    for i in sorted(list(range(1, l + 1)), reverse=True): -        # 1-indexed -        if arr[i - 1] == i: -            # print(aa, '除去') -            # 最後に入れた数は、何番目と数の大きさが一致する -            rec(arr[: i - 1] + arr[i:], l - 1, lst + [i]) -        elif arr[i - 1] > i: -            # 何番目よりも数が大きい -            return -    return - +from collections import deque -rec(b, N, []) -print((-1)) +# 最後に挿入した数字は +# k番目のkとなる +# 1 2 2 1 2 3 2 +# 複数通り該当するときは +# 最後の数が該当する +# 0 0 3 0 0 6 +# 3を取り除くと +# 0 0 0 0 6 -> 矛盾 +ans = deque() +q = deque(enumerate(b, 1)) +r = deque() +flg = False +while q: +    idx, bb = q.pop() +    # print(idx, bb, r) +    if idx == bb: +        ans.appendleft(bb) +        if len(ans) == N: +            flg = True +            break +        q.extend(r) +        r = deque() +    else: +        r.appendleft((idx - 1, bb)) +if flg: +    for aa in ans: +        print(aa) +else: +    print((-1))