#include <stdio.h>
void buildMaxHeap(void);
void maxHeapify(int );
int left(int );
int right(int );
int heap_size;
int A[500005];
int main() {
    int i;
    scanf("%d",&heap_size);
    for(i=1;i<=heap_size;i++) {
        scanf("%d",&A[i]);
    }
    buildMaxHeap();
    for(i=1;i<=heap_size;i++) {
        printf(" %d",A[i]);
    }
    printf("\n");
    return 0;
}
 
int left(int i) { return 2*i; }
int right(int i) { return 2*i+1; }
 
void buildMaxHeap(void) {
    int i;
    for(i= heap_size/2;i>=1;i--) {
        maxHeapify(i);
    }
}
 
void maxHeapify(int i) {
    int l,r,temp,largest=0;
    l = left(i);
    r = right(i);
    if( l <= heap_size && A[l] > A[i] ) largest = l;
    else largest = i;
    if( r <= heap_size && A[r] > A[largest] ) largest = r;
    if(largest != i) {
        temp = A[i];
        A[i] = A[largest];
        A[largest] = temp;
        maxHeapify(largest);
    }
}