#include<stdio.h>
#define MAX 2000000
int H,A[MAX+1];

void maxHeapify(int);
void swap(int *x ,int *y );

int main(){
int i,k;

scanf("%d", &H);

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

 for ( 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,r,largest;

  l=2*i;
  r=2*i+1;

   if (l<=H && A[l]>A[i]){
     largest=l;
   } 
   else{
     largest=i;
   }
   if (r<=H && A[r]>A[largest]){
     largest=r;
   }
 if (largest!=i){
   swap(&A[i],&A[largest]);
   maxHeapify(largest);
   }
}

void swap(int *x, int *y){
    int  work;      

    work = *x;       
    *x = *y;          
    *y = work;      
}