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


class DSU:
    def __init__(self):
        self.__parent = defaultdict(set)

    def make_set(self, element: int):
        self.__parent[element].add(element)

    def find_set(self, element: int):
        for key in self.__parent.keys():
            if element in self.__parent[key]:
                return key

    def union_sets(self, element_1: int, element_2: int):
        element_1 = self.find_set(element_1)
        element_2 = self.find_set(element_2)
        if element_1 != element_2:
            self.__parent[element_1] = self.__parent.pop(element_1).union(self.__parent.pop(element_2))


def task2(childs: list) -> list:
    """
    Parameters:
    :children (list): children power list
    :return: list of maximum group powers
    """
    answer = list()
    size = len(childs)
    for i in range(size):
        tmp_min = list()
        for j in range(size - i):
            tmp_group = list()
            for l in [k + j for k in range(i + 1)]:
                tmp_group.append(childs[l])
            tmp_min.append(min(tmp_group))
        answer.append(max(tmp_min))
    return answer


a = int(input())
arr = list(map(int, input().split()))
print(*task2(arr))
