#include<stdio.h>
#define MAX 2000000

int A[MAX];
int H;
void maxheapify( int i);

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

void maxheapify(int i){
    int l = 2 * i;
    int r = 2 * i  +1;
    int largest,t;
    
    // 左の子、自分、右の子で値が最大のノードを選ぶ
    if(l<=H && A[l]>A[i]) largest=l;
    else largest=i;
    if(r<=H && A[r]>A[largest]) largest=r;
    
    if(largest != i){
        t=A[i];
        A[i]=A[largest];
        A[largest]=t;
        maxheapify(largest);
    }
}
