#include<stdio.h>
#define H 500000
int left(int);
int right(int);
void buildMaxHeap(int *,int );
void maxHeapify(int *,int ,int );

void maxHeapify(int *A,int i,int n){
  int largest,l,r,tmp;
  l = left(i);
  r = right(i);
   
  if (l<=n && A[l]>A[i])  largest = l;
  else  largest = i;
  
  if(r<=n && A[r]>A[largest])  largest = r;
  if (largest != i){
    tmp=A[i];
    A[i]=A[largest];
    A[largest]=tmp;
    maxHeapify(A, largest,n);
  }
}
int left(int i){
  return 2*i;
}

int right(int i){
  return 2*i+1;
}
void buildMaxHeap(int *A,int n){
  int i;  
  for(i=n/2;i>0;i--) maxHeapify(A, i,n);
}
	       
int main(){
  int n,i;
  int A[H];

  scanf("%d",&n);
  for(i=1;i<=n;i++){
    scanf("%d",&A[i]);
  }
  buildMaxHeap(A,n);
 
  for(i=1;i<=n;i++){
    if(i<n)    printf(" %d",A[i]);
    else printf(" %d\n",A[i]);
  }
  return 0;
}