#include <cstdio>
#include <algorithm>
using namespace std;
int h[500003];int n;
void heapup(int x){
if(x>1){
if(h[x]>h[x/2])swap(h[x],h[x/2]);
heapup(x/2);
}
}
void heapdown(int x,int n){
if(2*x<=n){
int dr=0;
int st=h[2*x];
if(2*x+1<=n)dr=h[2*x+1];
else dr=st-1;
if(st>dr && h[x]<st){
swap(h[x],h[2*x]);
heapdown(2*x,n);
}
else if(h[x]<dr)swap(h[x],h[2*x+1]);
heapdown(2*x+1,n);
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&h[i]);
heapup(i);
}
for(int i=n;i>=2;i--){
swap(h[1],h[i]);
heapdown(1,i-1);
}
for(int i=1;i<=n;i++)
printf("%d ",h[i]);
return 0;
}