#include <stdio.h>

#define MAX 20000000

int h, A[MAX];

void maxHeapify(int);

int main(){
  int i;
  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,swap;
  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[i] = A[largest];
    A[largest] = swap;
    maxHeapify(largest);
  }
}

