const int MAX_SIZE = 20;
int test[MAX_SIZE];
int size,copysize;
void INIT() {
int i;
scanf("%d ",&size);
copysize = size;
for(i = 1; i <= size; i++)
{
scanf("%d ",&test[i]);
}
return;
}
void MAX_HEAPIFY(int i) {
int l,r,largest,tmp;
l = i<<1;
r = (i<<1) + 1;
if(l <= size && test[l] > test[i])
largest = l;
else
largest = i;
if(r <= size && test[r] > test[largest])
largest = r;
if(largest != i)
{
tmp = test[i];
test[i] = test[largest];
test[largest] = tmp;
MAX_HEAPIFY(largest);
}
return ;
}
void BUILD_MAX_HEAP()
{
int i = size/2;
for(; i > 0; i--)
{
MAX_HEAPIFY(i);
}
}
void HEAP_SORT()
{
int tmp;
while(size > 1)
{
BUILD_MAX_HEAP();
tmp = test[size];
test[size] = test[1];
test[1] = tmp;
size--;
}
return;
}
void PRINTF()
{
int i;
for(i = 1; i <= copysize; i++)
{
printf("%d ",test[i]);
}
return;
}
void main ()
{
freopen("input.txt","r",stdin);
INIT();
HEAP_SORT();
PRINTF();
}