#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 2;
int fw[N];
void upd(int i, int val){
for (i++;i < N;i+=i&-i) fw[i] += val;
}
int qry(int i){
int res = 0; for (i++;i;i-=i&-i) res += fw[i]; return res;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
map<int, stack<int>> mp;
struct lz {
int l, r, c;
bool operator < (const lz &o) const {
return r < o.r;
}
};
vector<lz> ans;
vector<int> v(n);
for (int i = 0;i < n;i++){
cin >> v[i];
while (!mp[v[i]].empty() && qry(mp[v[i]].top()))
mp[v[i]].pop();
if (!mp[v[i]].empty()){
upd(mp[v[i]].top(), 1);
upd(i - 1, -1);
ans.push_back({mp[v[i]].top(), i, v[i]});
mp[v[i]].pop();
}
mp[v[i]].push(i);
}
int ll = n + 1;
sort(ans.rbegin(), ans.rend());
for (auto [l, r, c]:ans){
if (l > ll) continue;
ll = l;
for (int i = l;i <= r;i++)
v[i] = c;
}
for (auto e:v) cout << e << '\n';
return 0;
}