#include #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; const int INF=1<<29; class segment_tree_dual{ int n; vector seg; void chmax(int l,int r,int a,int b,int u,int x){ if(l<=a && b<=r){ seg[u]=max(seg[u],x); return; } int c=(a+b+1)/2; if(l=1;u/=2) res=max(res,seg[u]); return res; } }; int main(){ int n; scanf("%d",&n); vector a(n); rep(i,n) scanf("%d",&a[i]); map> f; rep(i,n) f[a[i]].emplace_back(i); segment_tree_dual ST(n); for(auto [x,v]:f){ int l=INF,r=-INF; for(auto i:v){ l=min(l,i); r=max(r,i+1); } ST.chmax(l,r,x); } rep(i,n) printf("%d%c",ST.get(i),i