#include<stdio.h>

#define N 500000

int H,tmp=0,A[N];

void maxHeapify(int i){
int l,r,largest;
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){
tmp = A[i];
A[i] = A[largest];
A[largest] = tmp;
maxHeapify(largest);
}
}

void buildMaxHeap(void){
int i;
for(i=H/2; i>0; i--){
maxHeapify(i);
}
}


int main(){
int i;
scanf("%d", &H);
for(i=1; i<=H; i++){
scanf("%d", &A[i]);
}
buildMaxHeap();
for(i=1; i<=H; i++){
printf(" %d", A[i]);
}
printf("\n");
 
return 0;
}

