(* O(n^2) *)
let n = Scanf.scanf " %d" @@ (+) 0
let bs = Array.init n @@ fun _ -> Scanf.scanf " %d" @@ (+) 0
let search_backi a f =
  let i = ref @@ Array.length a - 1 in
  let found = ref false in
  while not !found && !i >= 0 do if f !i a.(!i) then found := true; decr i done;
  !i + if !found then 1 else 0
let remove a i =
  let a' = Array.make (Array.length a - 1) a.(0) in
  Array.iteri (fun j x -> if j < i then a'.(j) <- x else if j > i then a'.(j - 1) <- x) a;
  a'
let rec f acc a n =
  if n = 0 then acc
  else
    let i = search_backi a (fun i x -> i + 1 = x) in
    if i = -1 then (print_endline "-1"; exit 0)
    else f (a.(i) :: acc) (remove a i) @@ n - 1
let ans = f [] bs n
let _ = ans |> List.iter @@ Printf.printf "%d\n"