#include<stdio.h>
#define MAX 2000000
int N;
int left(int);
int right(int);
int parent(int);
void maxHeapify(int *,int);
void buildMaxHeap(int *);
int main(){
  scanf("%d",&N);
  int A[MAX+1],i;
  for(i=1;i<=N;i++){
    scanf("%d",&A[i]);
  }
  buildMaxHeap(A);
  for(i=1;i<=N;i++) printf(" %d",A[i]);
  printf("\n");
  return 0;
  
}
int left(int n){
  return 2*n; 
}
int right(int n){
  return (2*n)+1;
}
int parent(int n){
  return n/2;
}
void maxHeapify(int A[],int i){
  int l=left(i);
  int r=right(i);
  int lst,temp;
  
  if(l<=N&&A[l]>A[i]){
    lst=l;
  }else{
    lst=i;
  }
  if(r<=N&&A[r]>A[lst]){
    lst=r;
  }
  if(lst!=i){
    temp=A[i];
    A[i]=A[lst];
    A[lst]=temp;
  maxHeapify(A,lst);
  }
}
void buildMaxHeap(int A[]){
  int i;
  for(i=N/2;i>=1;i--){
    maxHeapify(A,i);
  }
}

