#include <bits/stdc++.h>
using namespace std;
int Read() {
  int val = 0, opt = 1;
  char ch;
  while (!isdigit(ch = getchar()))
    if (ch == '-') opt = -1;
  while (isdigit(ch)) (val *= 10) += ch - '0', ch = getchar();
  return val * opt;
}
int a[100100], n, Vis[100100];
void work() {
  n = Read();
  for (int i = 1; i <= n; i++) {
    a[i] = Read();
    if (a[i] > i || a[i] < a[i - 1]) {
      printf("-1\n");
      return;
    }
    Vis[a[i]] = 1;
  }
  int t = 0;
  while (Vis[t]) t++;
  for (int i = 1; i <= n; i++) {
    if (a[i] != a[i - 1]) {
      printf("%d ", a[i - 1]);
      Vis[a[i - 1]] = 1;
    } else {
      while (Vis[t]) t++;
      printf("%d ", t);
      t++;
      while (Vis[t]) t++;
    }
  }
}
int main(void) {
  work();
  return 0;
}
