#include<stdio.h>

/* 値を入れ替える関数 */
void swap (int *x, int *y) {
  int temp;    // 値を一時保存する変数

  temp = *x;
  *x = *y;
  *y = temp;
}

/* pushdouwn操作 */
void pushdown (int array[], int first, int last) {
  int parent = first;   // 親
  int child = 2*parent;   // 左の子
  while (child <= last) {
    if ((child < last) && (array[child] < array[child+1])) {
       child++;   // 右の子の方が大きいとき、右の子を比較対象に設定
    }
    if (array[child] <= array[parent]) { break; }   // ヒープ済み
    swap(&array[child], &array[parent]);
    parent = child;
    child = 2* parent;
  }
}


int main (void) {
  int array[500001];
  int i,n;

  scanf("%d",&n);

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

  for (i = n/2; i >= 1; i--) {
    pushdown(array, i, n);   // 全体をヒープ化
  }

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

  printf("\n");
    


  return 0;
}

