#include <stdio.h>
#include <stdlib.h>
#define MAX 2000000

int H, A[MAX+1];

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

	// select the node which has the maximum value
	if (l <= H && A[l] > A[i]) largest = l;
	else largest = i;
	if (r <= H && A[r] > A[largest]) largest = r;

	if (largest != i) {
		tmp = A[i];
		A[i] = A[largest];
		A[largest] = tmp;
		maxHeapify(largest);
	}
}

int main () {
	int i;

	scanf("%d", &H);
	for (i = 1; i <= H; i++) scanf("%d",&A[i]);
	for (i = H/2; i >= 1; i--) maxHeapify(i);
	for (i = 1; i <= H; i++) {
		printf(" %d",A[i]);
	}
	printf("\n");

	return 0;
}
