#include <stdio.h>
void maxHeapify(int[], int);
void buildMaxHeap(int[]);
int H;

int main()
{
  int i,A[100000];

  scanf("%d",&H);
  for(i=1;i<=H;i++) scanf("%d",&A[i]);
  maxHeapify(A, i);
  buildMaxHeap(A);

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

void maxHeapify(int A[],int i)
{
  int l,r,largest,temp;

  l = i*2;
  r = l+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){  // i ???????????????????????§????????´???
    temp=A[i];
    A[i]=A[largest];
    A[largest]=temp;
    maxHeapify(A, largest); // ?????°??????????????????
  }	     
}

void buildMaxHeap(int A[])
{
  int i;
  for(i=H/2;i>=1;i--) maxHeapify(A, i);
}