#include<stdio.h>

#define MAX 2000000

int H;
int A[MAX+1];
int i;

void maxHeapify(int i);
void swap(int *x,int *y);

int main(void)
{
  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]);
    }

  putchar('\n');

  return 0;
}

void swap(int *x,int *y)
{
  int tmp;

  tmp=*x;

  *x=*y;

  *y=tmp;
}
  

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

  if(A[l]>A[i]&&l<=H)
    {
      largest=l;
    }

  else
    {
      largest=i;
    }

  if(A[r]>A[largest]&&r<=H)
    {
      largest=r;
    }

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

      maxHeapify(largest);
    }

}

