#include <stdio.h>
#include <stdlib.h>

void maxHeapify(int *A, int i, int H){
	int l, r, largest, temp;
	l = 2 * i;
	r = 2 * i + 1;

	if(l <= H && A[l] > A[i])
		largest = l;
	else
		largest = i;
	if(r <= H && A[r] > A[largest])
		largest = r;

	if(largest != i){
		temp = A[i];
		A[i] = A[largest];
		A[largest] = temp;
		maxHeapify(A, largest, H);
	}
}

int main(){
	int H, *A, i;

	scanf("%d", &H);
	A = (int *)malloc(sizeof(int) * (H+1));
	for(i = 1; i <= H; i++)
		scanf("%d", &A[i]);

	for(i = H/2; i >= 1; i--)
		maxHeapify(A, i, H);

	for(i = 1; i <= H; i++)
		printf(" %d", A[i]);
	printf("\n");

	free(A);
	return 0;
}
