#include using namespace std; typedef long long ll; typedef vector vi; typedef vector vl; typedef complex P; typedef pair pii; #define REP(i,n) for(ll i=0;i>n; vl a(n),b(n,-1); REP(i,n)cin>>a[i]; map left,right; REP(i,n){ if(left.count(a[i])==0){ left[a[i]] = i; right[a[i]] = i; }else{ left[a[i]] = min(left[a[i]],i); right[a[i]] = max(right[a[i]],i); } } map::iterator iter,iter2; iter = left.begin(); iter2 = right.begin(); vector put(n+1),out(n+1); while(iter != left.end()){ ll lf = iter->second, rg = iter2->second; put[lf].push_back(iter->first); out[rg+1].push_back(iter->first); ++iter; ++iter2; } set q; REP(i,n){ REP(j,out[i].size())q.erase(out[i][j]); REP(j,put[i].size())q.insert(put[i][j]); b[i] = *q.rbegin(); } cout << b[0]; REPR(i,n)cout << " " << b[i]; cout << endl; return 0; }