#include<stdio.h>
#include<stdlib.h>
#define h 500000

void maxheapify(int *,int);
void buildMaxHeap(int *);

int H;
int main(){
  int i;
  int *A;


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

  buildMaxHeap(A);

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

void maxHeapify(int *A,int i){
  int l,r,largest,F;

  l = i*2;
  r = i*2+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){
    F=A[i];
    A[i]=A[largest];
    A[largest]=F;
    maxHeapify(A,largest);
  }
}

void buildMaxHeap(int *A){
  int i;
  for(i=H/2 ; i>0 ; i--){
    maxHeapify(A,i);
      }
}