#include <stdio.h>
int siz;
int a[200005],b[100005],ls[100005],rs[100005],u[100005];
void phase (int pos) {
if (ls[pos] <= siz && a[u[ls[pos]]] > a[u[rs[pos]]] && a[u[ls[pos]]] > a[u[pos]]) {
int tmp_pos = u[pos];
u[pos] = u[ls[pos]];
u[ls[pos]] = tmp_pos;
phase (ls[pos]);
}
else if (rs[pos] <= siz && a[u[rs[pos]]] > a[u[ls[pos]]] && a[u[rs[pos]]] > a[u[pos]]) {
int tmp_pos = u[pos];
u[pos] = u[rs[pos]];
u[rs[pos]] = tmp_pos;
phase (rs[pos]);
}
}
int main () {
int n; scanf ("%d",&n);
for (int i = 1;i <= n;i ++) {
scanf ("%d",&a[i]);
u[i] = i;
ls[i] = i << 1;
rs[i] = i << 1 | 1;
}
siz = n;
for (int i = n / 2;i >= 1;i --) {
phase (i);
}
for (int i = 1;i <= n;i ++) {
b[i] = a[u[1]];
u[1] = u[siz];
siz --;
phase (1);
}
for (int i = n;i >= 1;i --) printf ("%d ",b[i]);
printf ("\n");
return 0;
}