#include <stdio.h>
#include <stdlib.h>
#define left(i) (i*2)
#define right(i) (i*2+1)

int H;
int arr[50002];
int tmp = 0;

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

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

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

    return 0;
}
