#include <fstream>
#define DIM 500010
using namespace std;
ifstream fin ("algsort.in" );
ofstream fout("algsort.out");
int n, m, i, j, k, ok, minim;
int v[DIM], aux, c, p;
void swap(int a, int b){
aux = v[a];
v[a] = v[b];
v[b] = aux;
return;
}
void shift(){
c = i;
p = c / 2;
while(p != 0){
if(v[p] < v[c]){
swap(p, c);
c = p;
p /= 2;
}
else
break;
}
return;
}
void percolate(){
p = 1;
c = 2;
while(c <= i - 1){
if(c + 1 <= i - 1 && v[c+1] > v[c])
c ++;
if(v[c] > v[p]){
swap (p, c);
p = c;
c = c * 2;
}
else
break;
}
return;
}
void Build_Heap(){
fin >> n;
for(i = 1; i <= n; i ++){
fin >> v[i];
shift();
}
return;
}
void Heap_Sort(){
for(i = n; i >= 2; i --){
swap(1, i);
percolate();
}
for(i = 1; i <= n; i ++)
fout << v[i] << " ";
return;
}
int main(){
Build_Heap();
Heap_Sort();
return 0;
}