#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<map>
using namespace std;
map<int, int>hx, hh;
int a[100005] = { 0 }, ans[100005] = { 0 }, fx[100005] = { 0 };
int dfs(int x)
{
hx[x] = 1;
if (fx[x])
{
return a[x] = dfs(x + 1);
}
else return a[x] = (a[x - 1] + a[x]) / 2;
}
int main()
{
int n, x, k, len = 0;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> x;
k = len;
while (x < a[k])
{
a[k + 1] = a[k];
ans[hh[a[k + 1]]] = k + 1;
k--;
}
a[k + 1] = x;
ans[i] = k + 1;
hh[x] = i;
len++;
}
fx[1] = 1;
for (int i = 2; i <= n - 1; i++)
{
if (abs(a[i - 1] - a[i]) > abs(a[i + 1] - a[i]))fx[i] = 1;
}
for (int i = 1; i <= n; i++)
{
if (hx[i])continue;
if (fx[i])
{
hx[i] = 1;
a[i] = dfs(i + 1);
}
else a[i] = a[i - 1];
}
for (int i = 1; i <= n; i++)
{
printf("%d ", a[ans[i]]);
}
return 0;
}