#include #include #include #include #include #include #include #include #include #include #include #include #include #define repd(i,a,b) for (int i=(int)(a);i<(int)(b);i++) #define rep(i,n) repd(i,0,n) #define all(x) (x).begin(),(x).end() #define mod 1e9+7 #define inf 1<<32-1 #define mp make_pair #define pb push_back typedef long long ll; using namespace std; template inline void output(T a, int p) { if(p) cout << fixed << setprecision(p) << a << "\n"; else cout << a << "\n"; } // end of template int main() { cin.tie(0); ios::sync_with_stdio(0); // source code int N; cin >> N; vector A(N), L(N, -1), R(N, -1), B(N); rep(i, N){ cin >> A[i]; } set s; rep(i, N){ if (s.find(A[i]) == s.end()) { L[i] = A[i]; s.insert(A[i]); } } s.erase(all(s)); for (int i = N - 1; i >= 0; i--) { if (s.find(A[i]) == s.end()) { R[i] = A[i]; s.insert(A[i]); } } s.erase(all(s)); rep(i, N){ if (L[i]) s.insert(L[i]); B[i] = *max_element(all(s)); if (R[i]) s.erase(R[i]); } rep(i, N){ if (i) cout << " " << B[i]; else cout << B[i]; } cout << endl; return 0; }