#include <bits/stdc++.h>
using namespace std;
mt19937 rng((int)chrono::steady_clock::now().time_since_epoch().count());
const int INF = 0x3f3f3f3f;
const long long LINF = 0x3f3f3f3f3f3f3f3f;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  vector<int> p(n, -1);
  for (int i = 0; i < k; i++) cin >> p[i];
  set<int> ms(p.begin(), p.begin() + k);
  for (int i = 1; i <= n; i++) ms.insert(i);
  auto fail = [&]() {
    cout << -1 << endl;
    exit(0);
  };
  int ptr = 1;
  vector<int> st;
  for (int i = 0; i < k; i++) {
    if (!st.empty() && p[i] > st.back()) fail();
    st.push_back(p[i]);
    while (!st.empty() && st.back() == ptr) {
      st.pop_back();
      ptr++;
    }
  }
  while (!st.empty()) {
    while (!st.empty() && st.back() > ptr) {
      p[k++] = st.back() - 1;
      st.push_back(st.back() - 1);
    }
    while (!st.empty() && st.back() == ptr) {
      st.pop_back();
      ptr++;
    }
  }
  set<int> s;
  for (int i = 1; i <= n; i++) s.insert(i);
  for (int i = 0; i < k; i++) s.erase(p[i]);
  for (int i = k; i < n; i++) {
    p[i] = *s.rbegin();
    s.erase(p[i]);
  }
  for (int i = 0; i < n; i++) cout << p[i] << " ";
  cout << endl;
  exit(0);
}
