#include<stdio.h>

int l,r,h;

void buildmaxHeap(int T[]){
  for(int i=h/2;i>=1;i--)maxHeapify(T,i);
}

void maxHeapify(int T[],int i){
  int tem,lar;
  l=i*2;
  r=i*2+1;

  if(l<=h && T[l]>T[i])lar = l;
  else lar = i;
if(r<=h && T[r]>T[lar])lar = r;
  if(lar != i){
    tem=T[lar];
    T[lar]=T[i];
    T[i]=tem;
    maxHeapify(T,lar);
  }
}

  int main(){
    int i,k;
    scanf("%d",&h);
    int T[h+1];
    for(i=1;i<h+1;i++){
      scanf("%d",&k);
      T[i]=k;
    }

    buildmaxHeap(T);

    for(i=1;i<h+1;i++)printf(" %d",T[i]);
    printf("\n");
      return 0;
    }

