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

void maxl(int *,int );
void build(int *);
int n;

int main(){
	int *H,i;
	scanf("%d",&n);
	H=(int *)malloc(sizeof(int)*(n+1));
	for(i=1;i<=n;i++){
		scanf("%d",&H[i]);
	}
	build(H);
	for(i=1;i<=n;i++){
		printf(" %d",H[i]);
	}
	printf("\n");
	free(H);
	return 0;
}

void build(int *H){
	int i;
	for(i=n/2;i>0;i--){
		maxl(H,i);
	}
}

void maxl(int *H,int i){
	int l=2*i,r=2*i+1,lar;
	if(l<=n && H[l]>H[i])lar=l;
	else lar=i;
	if(r<=n && H[r]>H[lar])lar=r;
	
	if(lar!=i){
		l=H[i];
		H[i]=H[lar];
		H[lar]=l;
		maxl(H,lar);
	}
}
