#include <stdio.h>
#define MAX 500000
void swap(int*, int*)
void Max(int)
int n,A[MAX+1];

void  swap(int *x, int *y)
{
    int  work;        /* 作業用 */

    work = *x;        /* xの値を一時保存 */
    *x = *y;          /* xの値をyの値に書き換える */
    *y = work;        /* yの値をxの値に書き換える */
}

void Max(int i){
    int l,r,large;
    l=2*i;
    r=2*i+1;

    if(l<=n&&A[l]>A[i])
       large=l;
    else large=i;
    if(l<=n&&A[r]>A[large])
       large=r;
       
       if(large!=i){
           swap(*A[i],*A[large]);
           Max(large);
       }
}

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

}
