1 #include<iostream>
2
3 using namespace std;
4
5 void adjust(int* tree, const int r, const int n)
6 {
7 int e = tree[r];
8 int i;
9 for (i = 2*r; i<=n; i*=2)
10 {
11 if ( (i<n) && (tree[i]<tree[i+1]) )
12 i++;
13 if ( e >= tree[i] )
14 break;
15 tree[i/2] = tree[i];
16 }
17 tree[i/2] = e;
18 }
19
20 int main()
21 {
22 int tree[100];
23 int n,i;
24 cin>>n;
25 for ( i=0;i<n;i++)
26 cin>>tree[i+1];
27 for ( i=n/2;i>0;i--)
28 adjust(tree,i,n);
29 for ( i=n;i>1;i--)
30 {
31 int e=tree[i];
32 tree[i] = tree[1];
33 tree[1] = e;
34 adjust(tree,1,i-1);
35 }
36 for ( i=1;i<=n;i++)
37 {
38 cout<<tree[i]<<' ';
39 }
40 cout<<endl;
41 }