Mike is the president of country What-The-Fatherland. There are *n* bears living in this country besides Mike. All of them are standing in a line and they are numbered from 1 to *n* from left to right. *i*-th bear is exactly *a*<sub class="lower-index">*i*</sub> feet high. 

A group of bears is a non-empty contiguous segment of the line. The size of a group is the number of bears in that group. The strength of a group is the minimum height of the bear in that group.

Mike is a curious to know for each *x* such that 1 ≤ *x* ≤ *n* the maximum strength among all groups of size *x*.
The first line of input contains integer *n* (1 ≤ *n* ≤ 2 × 10<sup class="upper-index">5</sup>), the number of bears.

The second line contains *n* integers separated by space, *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>), heights of bears.
# ﷽
from collections import defaultdict
import sys
input = lambda: sys.stdin.readline().strip()
def inlst():return [int(i) for i in input().split()]
def get(lst,rng,default):
    stack=[]
    dp=[-1]*len(lst)
    for i in rng:
        while stack and lst[stack[-1]]>=lst[i]:stack.pop()
        
        if  stack:dp[i]=stack[-1]
        else:dp[i]=default
        stack.append(i)
    return dp
     
def solve():
    n=int(input())
    lst=[int(i) for i in input().split()]
    
    left=get(lst,range(n),-1)
    right=get(lst,reversed(range(n)),n)
    maxval=[-left[i]+right[i]-1 for i in range(n)]
    d=defaultdict(int)
    for i,j in enumerate(maxval):
         d[j]=max(lst[i],d[j])
    ans=[-1]*n
    ans[-1]=min(lst)
    for i in reversed(range(n-1)):
         ans[i]=max(ans[i+1],d[i+1])
         
    print(*ans)

        

if __name__ == "__main__":
    # for i in range(int(input())):
        solve()
