#include <stdio.h>
#define MAX 5000000

int h;
int a[MAX + 1];

void swap(int *x, int *y) {
	int temp;
	temp = *x;
	*x = *y;
	*y = temp;
}

void maxH(int i) {
	int l, r, largest;
	int 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) {
		swap(&a[i], &a[largest]);
		maxH(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--) maxH(i);
	for (i = 1; i <= h; i++) printf(" %d", a[i]);
	printf("\n");

	return 0;
}
