#include using namespace std; const int B = 100; int n; int a[100000]; int b[1000]; map mn, mx; int main(){ cin >> n; for (int i = 0; i < n; i++){ int x; cin >> x; if (!mn.count(x)) mn[x] = mx[x] = i; else mn[x] = min(mn[x], i), mx[x] = max(mx[x], i); } for (auto p : mn){ int l = mn[p.first], r = mx[p.first] + 1, x = p.first; if (l / B == r / B){ for (int i = l; i < r; i++){ a[i] = x; } } else { for (int i = l; i < (l / B + 1) * B; i++){ a[i] = x; } for (int i = r / B * B; i < r; i++){ a[i] = x; } for (int i = (l / B + 1) * B; i < r / B; i++){ b[i] = x; } } } for (int i = 0; i < n; i++){ cout << max(a[i], b[i / B]) << endl; } }