#include using namespace std; typedef long long ll; typedef unsigned long long ull; #define REP(i, n) for(int i=0; ibool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> N; vector A(N); for(auto& a : A) cin >> a; map> left, right; auto update_left = [&](ll key, int val){ if(left.count(key) == 0) left[key] = val; else chmin(left[key], val); }; REP(i,N){ update_left(A[i], i); right[A[i]] = i; } vector B(N); set se; REP(i,N) se.insert(i); for(auto& [a, L] : left){ auto R = right[a]; int idx = L; while(1){ auto iter = se.lower_bound(idx); if(iter == se.end()) break; if(*iter > R) break; idx = *iter; B[idx] = a; se.erase(iter); idx++; } } for(auto& b : B) cout << b << " "; cout << endl; return 0; }