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 gc
import heapq
import itertools
import math
from collections import Counter, deque, defaultdict
from sys import stdout
import time
from math import factorial, log, gcd
import sys
from decimal import Decimal
import threading
from heapq import *
from fractions import Fraction
import bisect


def S():
	return sys.stdin.readline().split()


def I():
	return [int(i) for i in sys.stdin.readline().split()]


def II():
	return int(sys.stdin.readline())


def IS():
	return sys.stdin.readline().replace('\n', '')
	

def main():
	n = II()
	a = I()
	ans = [-1] * n
	dp_left = [-1] * n
	for i in range(1, n):
		el = a[i]
		idx = i - 1
		while idx != -1 and a[idx] >= el:
			idx = dp_left[idx]
		dp_left[i] = idx
	dp_right = [n] * n
	for i in range(n - 2, -1, -1):
		el = a[i]
		idx = i + 1
		while idx != n and a[idx] >= el:
			idx = dp_right[idx]
		dp_right[i] = idx
	
	for i in range(n):
		length = dp_right[i] - dp_left[i] - 1
		ans[length - 1] = max(ans[length - 1], a[i])
	
	mx = min(a)
	for i in range(n - 1, -1, -1):
		ans[i] = max(ans[i], mx)
		mx = max(ans[i], mx)
	print(*ans)
	


	
if __name__ == '__main__':
	# for _ in range(II()):
	# 	main()
	main()