#include <stdio.h>

#define HEAP_SIZE_MAX 500
#define VALUE_MAX 2000000
#define VALUE_MIN -2000000
 
int parent(int);
int left(int);
int right(int);
void maxHeapify(int);
void swap(int, int);
 
int n, A[HEAP_SIZE_MAX+1];
 
int main(){
  int i;
  
  scanf("%d",&n);
   
  for(i=1;i<=n;i++) {
    scanf("%d", &A[i]);
  }
 
  for(i=n/2;i>=1;i--){
    maxHeapify(i);
  }
 

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

void maxHeapify(int i) {
  int l, r, largest;
  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){ 
    swap(i, largest);
    maxHeapify(largest);
  }
}
 
void swap(int i, int largest) {
  int tmp; 
    tmp = A[i];
    A[i] = A[largest];
    A[largest] = tmp;
}
 

int parent(int i){
  return i/2;
}
int left(int i){
  return 2 * i;
}
int right(int i){
  return 2 * i + 1;
}
 