Problem:
Score : 400 points

Problem Statement

Snuke has an empty sequence a.

He will perform N operations on this sequence.

In the i-th operation, he chooses an integer j satisfying 1 \leq j \leq i, and insert j at position j in a (the beginning is position 1).

You are given a sequence b of length N. Determine if it is possible that a is equal to b after N operations. If it is, show one possible sequence of operations that achieves it.

Constraints

All values in input are integers.

1 \leq N \leq 100

1 \leq b_i \leq N

Input

Input is given from Standard Input in the following format:

N
b_1 \dots b_N

Output

If there is no sequence of N operations after which a would be equal to b, print -1.
If there is, print N lines. In the i-th line, the integer chosen in the i-th operation should be printed. If there are multiple solutions, any of them is accepted.

Sample Input 1

3
1 2 1

Sample Output 1

1
1
2

In this sequence of operations, the sequence a changes as follows:

After the first operation: (1)

After the second operation: (1,1)

After the third operation: (1,2,1)

Sample Input 2

2
2 2

Sample Output 2

-1

2 cannot be inserted at the beginning of the sequence, so this is impossible.

Sample Input 3

9
1 1 1 2 2 1 2 3 2

Sample Output 3

1
2
2
3
1
2
2
1
1

Solution in Ruby (2.3.3) (judge verdict: Runtime Error)

def candi(n)
  x = Array.new
  for i in 2..n do
    x << (1..i).to_a
  end
  [1].product(*x).collect {|set| set}
end
# p candi(3)

def procedure(r)
  a = []
  r.each do |s|
    a.insert(s-1,s)  
  end
  a
end
#t = [1,1,2]
#p procedure(t)
def solved(r)
  ok = true
  for i in 0..(r.size-1) do
    if r[i] > i+1 then
      ok = false
    end
  end
  ok
end
# p solved([2,2])
# p solved([1,2])

x = Array.new
y = Array.new
while line = gets do
  x += line.chomp.split
end
x.each do |t|
  y << t.to_i
end
big_n = y[0]
b = y[1..-1]
# p big_n
# p b
if solved(b) then
  candi(big_n).each do |r|
    if procedure(r) == b then
      # puts r.join(" ")
      r.each {|s| puts s}
    end
  end
else
  puts "-1"
end