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.
# import time
# 
# start = time.time()

bears = int(input())
heights = list(map(int, input().split()))
answer = list()

logTable = [0] * (bears + 1)
for i in range(2, (bears+1)) :
	logTable[i] = logTable[i >> 1] + 1

#rmq = [[0] * (logTable[bears] + 1) for i in range(bears)]
rmq = [[0] * bears for i in range((logTable[bears] + 1))]

for i in range(bears) :
	rmq[0][i] = i

k=0
while( (1 << k) < bears ) :
	k=k+1
	i=0
	while( i + (1 << k) <= bears ) :
		x = rmq[k-1][i]
		y = rmq[k-1][i + (1 << (k - 1))]
		rmq[k][i] = x if heights[x] <= heights[y] else y
		i=i+1
	

def minPos(i,j) :
	k=logTable[j-i]
	x=rmq[k][i]
	y=rmq[k][j-(1<<k) + 1]
	return x if heights[x] <= heights[y] else y	



def calculate_strength(length) :
	best_strength = 0
	for x in range(bears - (length -1)) :
		#print("calculating ", x, " ", x+length-1," : ", heights[minPos(x,x+length-1)])
		best_strength = max(best_strength, heights[minPos(x,x+length-1)])

	return best_strength


#answer.append(calculate_strength(1))
for x in range(1, bears+1) :	
	answer.append(calculate_strength(x))
print (" ".join(map(str, answer)))



# end = time.time()
# print (str(end - start))

#print(rmq)
#print( heights[minPos(3,8)] )



