#include<stdio.h>
#define MAX 500001

int a[MAX];
int h;

void build_M_Heap(){
  int i;
  for(i = h/2; i >= 1; i--){
    M_Heapify(i);
  }
}

void M_Heapify(int i){
  int l, r;
  int largest;
  int v;
  
  l = 2 * i;
  r = 2 * i + 1;

  if(l <= h && a[l] > a[i]) largest = l;
  else largest = i;
  if(r <= h && a[r] > a[largest]) largest = r;

  if(largest != i){
    v = a[i];
    a[i] = a[largest];
    a[largest] = v;
    M_Heapify(largest);
  }
}

int main(){
  int i;

  scanf("%d", &h);
  for(i = 1; i <= h; i++){
    scanf("%d", &a[i]);
  }

  build_M_Heap();

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