#include <stdio.h>
#define MAX 2000000

int n,K[MAX+1];

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

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

void maxHeapify(int i){
  int l,r,max;
  l=2*i;
  r=2*i+1;
  if(l<=n && K[l]>K[i]) max=l;
  else max=i;
  if(r<=n && K[r]>K[max]) max=r;

  if(max !=i){
    swap(&K[i],&K[max]);
    maxHeapify(max);
  }
}


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

return 0;
}

