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

#define MAX 500001

int heap_size;

int Parent(int i){
  return i/2;
}
int Left(int i){
  return 2*i;
}
int Right(int i){
  return 2*i+1;
}

void maxHeapify(int A[],int i){
  int l,r,largest;
  int temp;
  
  l = Left(i);
  r = Right(i);
  

  if((l <= heap_size) && (A[l] > A[i])){
    largest = l;
  }
  else {
    largest = i;
  }
  
  if((r <= heap_size) && (A[r] > A[largest])){
    largest = r;
  } 
  
  if(largest != i){
    temp = A[i];
    A[i] = A[largest];
    A[largest] = temp;
    
    maxHeapify(A,largest);
  } 
}

void buildMaxHeap(int A[]){
  int i;

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

int main(void){
  int i,key[MAX];
  
  scanf("%d",&heap_size);
  
  for(i = 1 ; i <= heap_size ; i++){
    scanf("%d",&key[i]);  
  }
  
  buildMaxHeap(key);
  
  for(i = 1 ; i <= heap_size ; i++){
    printf(" %d",key[i]);
  }
  printf("\n");
  
  return 0;
}