#include <bits/stdc++.h>
using namespace std;
int p[200100], pos[200100];
vector<int> vec;
int vst[200100];
int main() {
  int n, k;
  cin >> n >> k;
  for (int i = 1; i <= k; i++) scanf("%d", &p[i]);
  for (int i = 1; i <= k; i++) pos[p[i]] = i, vst[p[i]] = 1;
  int st = 1, pre = 1;
  while (1) {
    if (pos[st] == 0) {
      for (int i = pre; i <= k; i++) vec.push_back(p[i]);
      break;
    } else {
      for (int i = pre; i < pos[st]; i++) {
        if (p[i] < p[i + 1]) {
          puts("-1");
          return 0;
        }
        vec.push_back(p[i]);
      }
      pre = pos[st] + 1;
      st++;
      while (vec.size()) {
        int x = vec.back();
        if (x == st) {
          vec.pop_back();
          st++;
          continue;
        }
        break;
      }
    }
  }
  if (vec.size() > 0) {
    for (int i = 0; i < vec.size() - 1; i++) {
      if (vec[i] < vec[i + 1]) {
        puts("-1");
        return 0;
      }
    }
  }
  for (int i = 1; i <= k; i++) printf("%d ", p[i]);
  if (vec.size()) {
    int st = 1;
    for (int i = vec.size() - 1; i >= 0; i--) {
      int v = vec[i];
      for (int j = v - 1; j >= st; j--) {
        if (!vst[j]) {
          printf("%d ", j);
          vst[j] = 1;
        }
      }
      st = v;
    }
  }
  for (int i = n; i >= 1; i--)
    if (!vst[i]) printf("%d ", i);
  cout << endl;
  return 0;
}
