#include <bits/stdc++.h>
using namespace std;
int n, k, p[200001], nv;
stack<int> s;
bool ok = true;
int main(void) {
  scanf("%d %d", &n, &k);
  for (register int i = 0; i < k; ++i) scanf("%d", p + i);
  nv = 1;
  int j = 0;
  while (j < k) {
    if (p[j] == nv) {
      s.push(p[j]);
      while (!s.empty() && nv == s.top()) ++nv, s.pop();
      ++j;
    } else {
      if (s.empty() || s.top() > p[j])
        s.push(p[j++]);
      else {
        ok = false;
        break;
      }
    }
  }
  if (ok) {
    for (register int i = 0; i < k; ++i) printf("%d ", p[i]);
    j = 0;
    while (!s.empty()) {
      int x = s.top() - 1;
      while (x >= nv) printf("%d ", x--);
      nv = s.top() + 1;
      s.pop();
    }
    while (nv <= n) printf("%d ", n--);
    putc('\n', stdout);
  } else
    puts("-1");
  return 0;
}
