#include <bits/stdc++.h>
using namespace std;
int a[200010], p[200010];
vector<int> s;
bool mark[200010];
int main() {
  int n, k, i, j, l;
  scanf("%d%d", &n, &k);
  for (i = 1; i <= n; i++) mark[i] = false;
  mark[0] = true;
  for (i = 0; i < k; i++) {
    scanf("%d", a + i);
    mark[a[i]] = true;
  }
  for (j = 1; j <= n;) {
    if (!mark[j]) {
      for (k = j; k <= n;) {
        if (mark[k]) break;
        k++;
      }
      l = k;
      for (k--; k >= j; k--) {
        a[i] = k;
        i++;
        mark[k] = true;
      }
      j = l;
    } else
      j++;
  }
  s.clear();
  for (i = 1; i <= n; i++) mark[i] = false;
  bool flag = true;
  for (i = 1, j = 0; i <= n; i++) {
    if (!mark[i]) {
      for (;;) {
        s.push_back(a[j]);
        mark[a[j]] = true;
        if (a[j] == i) break;
        j++;
      }
      j++;
    }
    if (s.back() == i)
      s.pop_back();
    else {
      flag = false;
      break;
    }
  }
  if (flag) {
    for (i = 0; i < n; i++) printf("%d%c", a[i], i == n - 1 ? '\n' : ' ');
  } else {
    printf("-1\n");
  }
  return 0;
}
