#include <iostream>
#include <vector>
using namespace std;
vector< vector<int> > dp;
vector<int> max_min;
int pop_function(vector<int> nums, int n)
{
    int min = 99999;
    for(int j = 1; j < n; j ++)
    {
        int k = j;
        min = 99999;
        for(int i = 0; i < nums.size() - k; i ++)
        {
            dp[i][k] =  nums[i + k] > dp[i][k - 1] ? nums[i + k] : dp[i][k - 1];
            if(dp[i][k] < min)
                min = dp[i][k];
        }

        max_min.push_back(min);
    }
    return 1;
}


int main() {
    int n;
    cin>>n;
    dp.resize(n);
    for(int j = 0; j < n; j ++)
    {
        dp[j].resize(n);
    }
    vector<int> nums;
    int i = 0;
    int min = 99999;
    while(i < n)
    {
        int a;
        cin>>a;
        nums.push_back(a);
        dp[i][0] = a;
        if(a < min)
            min = a;
        i++;
    }
    max_min.push_back(min);
    pop_function(nums, n);
    for(int j = 0; j < max_min.size(); j ++)
    {
        cout<<max_min[j]<<" ";
    }
}