#include <bits/stdc++.h>
using namespace std;
int main() {
//we have to find the maximum lexicographic mex first come sthe
//greater element
//if both are qual then come s the size
///first we have to precompute the suffix me xfor each element so that we can
//do the proplem properly
int n;
cin>>n;
vector<int>nums(n);
for(int i=0;i<n;i++){
cin>>nums[i];
}
vector<bool>seen(n+1,false);
vector<int>suff(n);
int cur=0;
for(int i=n-1;i>=0;i--){
if(nums[i]<=n)seen[nums[i]]=true;
while(seen[cur]){
cur++;
}
suff[i]=cur;
}
vector<int>ans;
//now e ahev to move from the front of the arary calculating
//like first max is suff[0] and we have to find the lasrgest val where it apperas like suff[0]
int i=0;
vector<int>found(n+1,0);
int timer=1;
while(i<n){
int maxi=suff[i];
int cur=0;
while(i<n&&cur!=maxi){
if(nums[i]<=n)found[nums[i]]=timer;
while(found[cur]==timer){
cur++;
}
i++;
}
timer++;
ans.push_back(maxi);
}
for(int i=0;i<ans.size();i++){
cout<<ans[i]<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCQoJLy93ZSBoYXZlIHRvIGZpbmQgdGhlIG1heGltdW0gbGV4aWNvZ3JhcGhpYyBtZXggZmlyc3QgY29tZSBzdGhlIAoJLy9ncmVhdGVyIGVsZW1lbnQgCgkvL2lmIGJvdGggYXJlIHF1YWwgdGhlbiBjb21lIHMgdGhlIHNpemUKCQoJCgkvLy9maXJzdCB3ZSBoYXZlIHRvIHByZWNvbXB1dGUgdGhlIHN1ZmZpeCBtZSB4Zm9yIGVhY2ggZWxlbWVudCBzbyB0aGF0IHdlIGNhbiAKCS8vZG8gdGhlIHByb3BsZW0gcHJvcGVybHkKCQoJaW50IG47CgljaW4+Pm47CgkKCXZlY3RvcjxpbnQ+bnVtcyhuKTsKCQoJZm9yKGludCBpPTA7aTxuO2krKyl7CgkJY2luPj5udW1zW2ldOwoJfQoJdmVjdG9yPGJvb2w+c2VlbihuKzEsZmFsc2UpOwoJdmVjdG9yPGludD5zdWZmKG4pOwoJaW50IGN1cj0wOwoJZm9yKGludCBpPW4tMTtpPj0wO2ktLSl7CgkJCgkJaWYobnVtc1tpXTw9bilzZWVuW251bXNbaV1dPXRydWU7CgkJCgkgICAgd2hpbGUoc2VlbltjdXJdKXsKCSAgICAJY3VyKys7CgkgICAgfQoJICAgIAoJCXN1ZmZbaV09Y3VyOwoJfQoJCgl2ZWN0b3I8aW50PmFuczsKCS8vbm93IGUgYWhldiB0byBtb3ZlIGZyb20gdGhlIGZyb250IG9mIHRoZSBhcmFyeSBjYWxjdWxhdGluZyAKCS8vbGlrZSBmaXJzdCBtYXggaXMgc3VmZlswXSBhbmQgd2UgaGF2ZSB0byBmaW5kIHRoZSBsYXNyZ2VzdCB2YWwgd2hlcmUgaXQgYXBwZXJhcyBsaWtlIHN1ZmZbMF0KCQoJaW50IGk9MDsKCXZlY3RvcjxpbnQ+Zm91bmQobisxLDApOwoJaW50IHRpbWVyPTE7Cgl3aGlsZShpPG4pewoJCWludCBtYXhpPXN1ZmZbaV07CgkJCgkJaW50IGN1cj0wOwoJCXdoaWxlKGk8biYmY3VyIT1tYXhpKXsKCQkJaWYobnVtc1tpXTw9bilmb3VuZFtudW1zW2ldXT10aW1lcjsKCQkJCgkJCXdoaWxlKGZvdW5kW2N1cl09PXRpbWVyKXsKCQkJCWN1cisrOwoJCQl9CgkJCWkrKzsKCQl9CgkJdGltZXIrKzsKCQlhbnMucHVzaF9iYWNrKG1heGkpOwoJfQoJCglmb3IoaW50IGk9MDtpPGFucy5zaXplKCk7aSsrKXsKCQljb3V0PDxhbnNbaV08PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==