#include <stdio.h>
#define H 500000

int A[H];
int n;

void maxHeapify(int i){
  int l, r, lar, temp;

  l = 2*i;
  r = 2*i+1;
//左のほうが大きい場合
  if((l <= n)&&(A[l] > A[i])){
    lar = l;
  }
  //自分が最大の場合
  else{
    lar = i;
  }
//
  if((l <= n)&&(A[r] > A[lar])){
    lar = r;
  }

  if(lar != i){
    temp = A[i];
    A[i] = A[lar];
    A[lar] = temp;
//再帰させる
    maxHeapify(lar);
  }

}

void buildMaxHeap(int n){
  int i;
  for(i = n/2; i >=1; i--){
    maxHeapify(i);
  }
}

int main(){
  int i;
  
  scanf("%d",&n);

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

  A[n+1] = 0;

  buildMaxHeap(n);

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

  return 0;
}


