#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int a[MAXN];
int n,size;
void down(int x)
{
int u = x;
if(2*x <= size&&a[u] > a[x*2])u = 2*x;
if(2*x + 1 <= size&&a[u] > a[x*2 + 1])u = 2*x + 1;
if(u != x)
{
swap(a[x],a[u]);
down(u);
}
}
int main()
{
cin>>n;
size = n;
for(int i = 1;i <= n;i++)cin>>a[i];
for(int i = n/2;i;i--)down(i);
int k = n;
while(k--)
{
cout<<a[1]<<" ";
a[1] = a[size--];
down(1);
}
return 0;
}