#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int , int>
#define FOR(i , l , r) for(int i = (l) ; i <= (r) ; i++)
#define FOD(i , r , l) for(int i = (r) ; i >= (l) ; i--)
#define fi first
#define se second
#define faster ios_base :: sync_with_stdio(false); cin.tie(NULL);
const int N = 2e5 + 5;
map<int , int> last;
int a[N];
int n;
int st[4 * N];
int lazy[4 * N];
void down(int id) {
int v = lazy[id];
if(v == 0) return;
st[2 * id] = v;
st[2 * id + 1] = v;
lazy[2 * id] = v;
lazy[2 * id + 1] = v;
lazy[id] = 0;
return;
}
void update(int id , int l , int r , int u , int v , int val) {
if(l > v || r < u) return;
if(u <= l && r <= v) {
st[id] = val;
lazy[id] = val;
return;
}
down(id);
int mid = (l + r) / 2;
update(2 * id ,l , mid , u , v , val);
update(2 * id + 1 , mid + 1 , r , u , v , val);
}
int get(int id , int l , int r , int pos) {
if(l == r) {
return st[id];
}
int mid = (l + r) / 2;
down(id);
if(mid >= pos) return get(2 * id , l , mid , pos);
else return get(2 * id + 1 , mid + 1 , r , pos);
}
void solve (void) {
cin >> n;
FOR(i , 1 , n) cin >> a[i];
FOD(i , n , 1 ) {
if(last[a[i]] == 0) {
last[a[i]] = i;
continue;
}
else{
int pos = last[a[i]];
update(1 , 1 , n , i , pos, a[i]);
last[a[i]] = i;
}
}
FOR(i , 1 , n) {
cout << get(1 , 1 , n , i) << endl;
}
}
main() {
faster;
solve();
return 0;
}