/// de fapt hepsort
#include <fstream>
#define f in
#define g out
using namespace std;
ifstream in ( "algsort.in" );
ofstream out( "algsort.out" );
int n, i, crt, tata, v[500500];
int main() {
f>>n;
for ( i=1; i <= n; i++ )
f>>v[i];
for ( i=2; i <= n; i++ ){
crt = i;
tata = i/2;
while ( tata >= 1 && v[crt] > v[tata] ) {
swap(v[crt], v[tata]);
crt = tata;
tata /= 2;
}
}
for ( i=n; i > 1; i-- ){
swap(v[i], v[1]);
crt = 2;
tata = 1;
while ( crt <= i-1 ) {
if ( crt+1 <= i-1 && v[crt+1] > v[crt] )
crt++;
if ( v[tata] < v[crt] )
swap(v[tata], v[crt]);
else break;
tata = crt;
crt = 2*crt;
}
}
for ( i=1; i <= n; i++ )
g<<v[i]<<" ";
return 0;
}