#include<stdio.h>
#define MAX 2000000

int H,A[MAX+1];

void  swap(int *x, int *y)
{
    int  work;        /* ????\???¨ */

    work = *x;        /* x????????????????????? */
    *x = *y;          /* x?????????y???????????????????????? */
    *y = work;        /* y?????????x???????????????????????? */
}

void maxHeapify(int i) {
  int l,r,largest;
  l = 2*i;
  r = 2*i+1;

  if(l <= H && A[l] > A[i]) largest = l;
  else largest = i;
  if(r <= H && A[r] > A[largest]) largest = r;

  if(largest != i){
    swap(&A[i], &A[largest]);
    maxHeapify(largest);
  }
}

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

  for( i = 1;i<=H;i++) scanf("%d\n", &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;
}