#include <iostream>
#include<bits/stdc++.h>
using namespace std;
// int mex(vector<int> &arr){
// int ans=0;
// int n=arr.size();
// unordered_map<int,int> mpp;
// for(int i=0;i<n;i++){
// mpp[arr[i]]++;
// while(mpp.find(ans)!=mpp.end()){
// ans++;
// }
// }
// return ans;
// }
int main() {
// your code goes here
int n;
cin>>n;
vector<int> arr(n);
for(int i=0;i<n;i++){
cin>>arr[i];
}
vector<int> suffix(n,0);
vector<int> answer(n,0);
vector<int> result;
int mex=0;
unordered_map<int,int> mpp;
for(int i=n-1;i>=0;i--){
mpp[arr[i]]++;
while(mpp.find(mex)!=mpp.end()){
mex++;
}
suffix[i]=mex;
}
answer[n-1]=n-1;
mpp.clear();
mpp[arr[n-1]]++;
for(int i=n-2;i>=0;i--){
mpp[arr[i]]++;
if(suffix[i]==suffix[i+1]){
int j=answer[i+1];
while(true){
mpp[arr[j]]--;
if(mpp[arr[j]]==0){
mpp[arr[j]]++;
break;
}
else{
j--;
}
}
answer[i]=j;
}
else{
answer[i]=answer[i+1];
}
}
int j=0;
while(j<n){
int a = suffix[j];
result.push_back(a);
j = answer[j]+1;
}
for(int i=0;i<result.size();i++){
cout<<result[i]<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIGludCBtZXgodmVjdG9yPGludD4gJmFycil7Ci8vIAlpbnQgYW5zPTA7Ci8vIAlpbnQgbj1hcnIuc2l6ZSgpOwovLyAJdW5vcmRlcmVkX21hcDxpbnQsaW50PiBtcHA7CgkKLy8gCWZvcihpbnQgaT0wO2k8bjtpKyspewovLyAJCW1wcFthcnJbaV1dKys7Ci8vIAkJd2hpbGUobXBwLmZpbmQoYW5zKSE9bXBwLmVuZCgpKXsKLy8gCQkJYW5zKys7Ci8vIAkJfQovLyAJfQovLyAJcmV0dXJuIGFuczsKCQovLyB9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWludCBuOwoJY2luPj5uOwoJdmVjdG9yPGludD4gYXJyKG4pOwoJZm9yKGludCBpPTA7aTxuO2krKyl7CgkJY2luPj5hcnJbaV07Cgl9CgkKCXZlY3RvcjxpbnQ+IHN1ZmZpeChuLDApOwoJdmVjdG9yPGludD4gYW5zd2VyKG4sMCk7Cgl2ZWN0b3I8aW50PiByZXN1bHQ7CgkKCQogICAgaW50IG1leD0wOwogICAgdW5vcmRlcmVkX21hcDxpbnQsaW50PiBtcHA7CiAgICAKICAgICAKCWZvcihpbnQgaT1uLTE7aT49MDtpLS0pewoJCW1wcFthcnJbaV1dKys7CgkJd2hpbGUobXBwLmZpbmQobWV4KSE9bXBwLmVuZCgpKXsKCQkJbWV4Kys7CgkJfQoJCXN1ZmZpeFtpXT1tZXg7Cgl9CglhbnN3ZXJbbi0xXT1uLTE7CgltcHAuY2xlYXIoKTsKICAgIG1wcFthcnJbbi0xXV0rKzsKICAgIAoJZm9yKGludCBpPW4tMjtpPj0wO2ktLSl7CgkJbXBwW2FycltpXV0rKzsKCQkKCQlpZihzdWZmaXhbaV09PXN1ZmZpeFtpKzFdKXsKCQkJaW50IGo9YW5zd2VyW2krMV07CgkJCXdoaWxlKHRydWUpewoJCQkJbXBwW2FycltqXV0tLTsKCQkJCWlmKG1wcFthcnJbal1dPT0wKXsKCQkJCQltcHBbYXJyW2pdXSsrOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQkJZWxzZXsKCQkJCQlqLS07CgkJCQl9CgkJCX0KCQkJYW5zd2VyW2ldPWo7CgkJfQoJCWVsc2V7CgkJCWFuc3dlcltpXT1hbnN3ZXJbaSsxXTsKCQl9Cgl9CgkKCWludCBqPTA7Cgl3aGlsZShqPG4pewoJCWludCBhID0gc3VmZml4W2pdOwoJCXJlc3VsdC5wdXNoX2JhY2soYSk7CgkJaiA9IGFuc3dlcltqXSsxOwoJCQoJfQoJCglmb3IoaW50IGk9MDtpPHJlc3VsdC5zaXplKCk7aSsrKXsKCQljb3V0PDxyZXN1bHRbaV08PGVuZGw7CgkJCgl9CgkKCgkKCQoJcmV0dXJuIDA7Cn0=