#include<bits/stdc++.h>
#define _GLIBCXX_DEBUG
#define rep(i,n) for (int i = 0; i < (int)(n); i++)
#define all(v) v.begin(),v.end()
#define puts(i) cout << i << endl
#define INF INT_MAX
#define INFL LLONG_MAX
typedef long long ll;
using namespace std;


int main(){


  ll n;
  cin >> n;
std::vector<ll> p(n);
std::vector<ll> m(n);
std::vector<ll> v(200001);


  ll mi=0;

  rep(i,n) {
    cin >> p.at(i);
    v.at(p.at(i))=1;

    if(p.at(i)==mi){
      for(ll j=mi;j<200001;j++){
        if(v.at(j)==0){
          mi=j;
          break;
        }
      }
    }

    m.at(i)=mi;

    }

    rep(i,n) cout << m.at(i) << endl;
}

#include <bits/stdc++.h>
using namespace std;
 
int main() {
  int n,k;
  k=0;
  cin>>n;
  vector<int>p(n);
  vector<int>a(200002);
  for(int i=0;i<200002;i++){
    a.at(i)=i;
  }
  for(int i=0;i<n;i++){
    cin>>p.at(i);
  }
  for(int i=0;i<n;i++){
    a.at(p.at(i))=-1;
    for(int j=k;j<200002;j++){
      if(a.at(j)!=-1){
        cout<<j<<endl;
        k=j;
        break;
      }
    }
  }

}