#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]<<" ";
}
}