#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500010],n,fiu,tata,i;
int main () {
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
for (i=2;i<=n;i++) {
fiu=i;
tata=fiu/2;
while(tata>=1&&v[fiu]>v[tata]) {
swap(v[fiu],v[tata]);
fiu=tata;
tata=fiu/2;
}
}
for (i=n; i>=2; i--) {
swap(v[1],v[i]);
tata=1;
fiu=2;
while(fiu<=i-1) {
if (fiu+1<=i-1&&v[fiu+1]>v[fiu])
fiu++;
if (v[tata]<v[fiu]) {
swap(v[tata],v[fiu]);
}
else
break;
tata = fiu;
fiu = 2*tata;
}
}
for(i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}