#include <stdio.h>
int T[500000];
int size;

void maxHeapify(int i)
{
  int l,r,max=0,tmp;
  l=left(i);
  r=right(i);
  if(l<=size&&T[l]>T[i])
    {
      max=l;
    }
  else
    {
      max=i;
    }
  if(r<=size&&T[r]>T[max])
    {
      max=r;
    }
  if(max!=i)
    {
      tmp=T[i];
      T[i]=T[max];
      T[max]=tmp;
      maxHeapify(max);
    }
}

void buildMaxHeap(void)
{
  int i;
  for(i=size/2;i>=1;i--)
    {
      maxHeapify(i);
    }
}

int right(int i)
{
  return 2*i+1;
}

int left(int i)
{
  return 2*i;
}

main()
{
  int i;
  scanf("%d",&size);
  for(i=1;i<=size;i++)
    {
      scanf("%d",&T[i]);
    }
  buildMaxHeap();
  for(i=1;i<=size;i++)
    {
      printf(" %d",T[i]);
    }
  printf("\n");
  return 0;
}