/*
	Heap sort
	@Author: md.moniruzzaman
*/
#include<stdio.h>

#define maxn 100

int A[maxn];
int Size, N;

void MaxHeapify(int i) {
	int largest, t;
	int l = 2*i;
	int r = 2*i + 1;
	if( l<= Size && A[l] > A[i])
		largest = l;
	else 
		largest = i;
	if(r <= Size && A[r] > A[largest])
		largest = r;
	if(largest != i)  {
		t = A[i];
		A[i] = A[largest];
		A[largest] = t;
		MaxHeapify(largest);
	}
}


void Build_Max_Heap() {
	int i;
	Size = N;
	for(i = N/2; i>= 1; i --)
		MaxHeapify(i);
}

void HeapSort() {
	int i, t;
	Build_Max_Heap();
	for(i = N; i>= 2; i--) {
		t = A[1];
		A[1] = A[i];
		A[i] = t;
		Size --;
		MaxHeapify(1);
	}
}
void main() {
	int i;
	scanf("%d",&N);
	for(i = 1; i<= N; i++) {
		scanf("%d",&A[i]);
	}
	HeapSort();
	for(i = 1; i<= N; i++)
		printf("%d ",A[i]);
}
