#include<stdio.h>
#define N 200000000

int i;
int A[N+1];
int H;
int left(int i){
return i*2;
}
int right(int i){
  return i*2+1;
}
void maxHeapify(int i){
  int l,r,largest;
  int m;
  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){
        m =  A[i];
        A[i] = A[largest];
        A[largest] = m;

        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;
}

