#include typedef long long ll; typedef unsigned long long ull; #define FOR(i,a,b) for(int (i)=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RANGE(vec) (vec).begin(),(vec).end() using namespace std; class GakuX5 { public: void solve(void) { int n; cin>>n; // // bi が t に置き換えられるのは bi の左右に t が存在するときなので // bi = max{t| l<=i<=r && t == a[l] == a[r]} // vector a(n); map m; REP(i,n) { cin>>a[i]; m[a[i]] = i; } set s; REP(i,n) { s.insert(a[i]); cout<<*s.rbegin(); // 最大のものを出力 if (i == m[a[i]]) s.erase(a[i]); if (i != n-1) cout<<" "; } cout<solve(); delete obj; return 0; } #endif