#include <stdio.h>
#define MAX 500001

void maxHeapify(int *,int);
void buildMaxHeap(int *);
void temp(int *,int *);
int H;

int main(){
  int i,A[MAX];

  scanf("%d",&H);
  for(i=1;i<=H;i++) scanf("%d",&A[i]);
    
  buildMaxHeap(A);
  
  for(i=1;i<=H;i++) printf(" %d",A[i]);
  printf("\n");

  return 0;
}

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

  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){
    temp(&A[i],&A[largest]);
    maxHeapify(A,largest);
  }
}

void buildMaxHeap(int *A){
  int i;

  for(i=H/2;i>=1;i--) maxHeapify(A,i);
}

void temp(int *a,int *b){
  int temp;

  temp=*a;
  *a=*b;
  *b=temp;
}