#include <stdio.h>
#define H 50000
int A[H],n;

int left(int);
int right(int);
void build(void);
void max(int);
void print(void);

int main(){

  int i;

  scanf("%d",&n);
  for(i=1;i<=n;i++){
    scanf("%d",&A[i]);
  }
  build();
  print();
  


  return 0;

}


void max(int i){
  int largest,tmp,l,r;

  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[largest];
    A[largest]=A[i];
    A[i]=tmp;
    max(largest);
  }

}


void build(){
  int i;
  for(i=n/2;i>0;i--){
    max(i);
  }

}


  int left(int i){
  
    return 2*i;
  }

  int right(int i){
  
    return (2*i)+1;
  }
  
  void print(){
    int i;
    for(i=1;i<=n;i++){
      printf(" %d",A[i]);
      
    }
 printf("\n");
  }