#include <stdio.h>

#define MAX 500000

int H,A[MAX+1];
int i;

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

void maxHeapify(int i){
  int l,r,largest;
  int change;

  l = left(i);
  r = right(i);

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

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

