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

#define N 500001

int left(int );
int right(int );
void maxHeapify(int *,int );
void buildMaxHeap(int *);

int n,H;

int main(){
    int i,*A;

    scanf("%d",&n);

    A=(int *)malloc(n*sizeof(int));

    for(i=1;i<=n;i++) scanf("%d",&A[i]);

    buildMaxHeap(A);

    for(i=1;i<=n;i++) printf(" %d",A[i]);

    printf("\n");

    free(A);

    return 0;

}

int left(int i){
    return 2*i;
}

int right(int i){
    return 2*i+1;
}

void maxHeapify(int *A,int i){
    int l,r,largest,temp;

    l=left(i);
    r=right(i);
    
    if(l<=H && A[l]>A[i]) largest = l;
    else largest=i;
    if(r<=H && A[r]>A[largest]) largest=r;

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

void buildMaxHeap(int *A){
    int i;
    H=n;
    for(i=H/2;i>=1;i--) maxHeapify(A,i);
}