#include<stdio.h>
#define H 500000

int h, a[H+1];

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, Max, n;
  l = left(i);
  r = right(i);
  if(l <= h && a[l] > a[i]) Max=l;
  else Max=i;
  if(r <= h && a[r] > a[Max]) Max=r;
  if(Max != i){
    n=a[i];
    a[i]=a[Max];
    a[Max]=n;
    maxHeapify(a, Max);
  }
}

void buildMaxHeap(int* A){
  int i;
  for(i=H/2; i>=1; i--){
    maxHeapify(A, i);
  }
}
  
int main(){
  
  int i;
  scanf("%d", &h);
  for(i=1; i<=h; i++) scanf("%d", &a[i]);
  buildMaxHeap(a);
  for(i=1; i<=h; i++){
    printf(" %d",a[i]);
  }
  printf("\n");
  return 0;
}