#include <bits/stdc++.h>
//#include <atcoder/all>
#define endl "\n"
using namespace std;
typedef long long ll;
typedef pair<ll, ll> l_l;
typedef pair<int, int> i_i;
template<class T>
inline bool chmax(T &a, T b) {
    if(a < b) {
        a = b;
        return true;
    }
    return false;
}

template<class T>
inline bool chmin(T &a, T b) {
    if(a > b) {
        a = b;
        return true;
    }
    return false;
}

const long long INF = 1e18;
//const ll mod = 1000000007;

int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    set<int> st;
    for(int i = 0; i <= 3e5; i++) st.insert(i);
    int N;
    cin >> N;
    for(int i = 0; i < N; i++) {
        int p;
        cin >> p;
        st.erase(p);
        cout << *st.begin() << endl;
    }
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define REP(i, n) for (int i = 0; i < (int)(n); i++)
#define RREP(i, n) for (int i = n - 1; i >= 0; i--)
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define INF 1000000000000
typedef long long ll;

int main()
{
  int n, ans = 0;
  cin >> n;
  vector<int> p(n), s(200001);
  REP(i, n)
  {
    cin >> p[i];
  }
  REP(i, n)
  {
    s[p[i]]++;
    if (s[ans] > 0)
    {
      FOR(j, ans + 1, 200001)
      {
        if (s[j] == 0)
        {
          ans = j;
          break;
        }
      }
    }
    cout << ans << endl;
  }
}