#include<bits/stdc++.h>
using namespace std;
int f[100005],n;
void mswap(int* a,int * b){
int t=*b;
*b=*a;
*a=t;
return;
}
void down(int pa,int n){
int chl=pa*2+1;
while(chl<n){
if(chl+1<n&&f[chl+1]>f[chl]){chl++;}
if(f[chl]>f[pa]){
mswap(f+chl,f+pa);
down(chl,n);
}
else{
break;
}
}
}
void heapsort(){
int flag=n/2;
for(int i=flag;i>=0;i--){
down(i,n);
}
for(int i=n-1;i>0;i--){
mswap(f,f+i);
down(0,i);
}
}
int main(){
cin>>n;
for(int i=0;i<n;i++) cin>>f[i];
heapsort();
for(int i=0;i<n;i++) cout<<f[i]<<' ';
return 0;
}
#2~#4WA