#include <stdio.h> //heaps
#define MAX 500000
 
int n, A[MAX];
 
int left(int i)
{
  return 2*i;
}
 
int right(int i)
{
  return 2*i+1;
} 
 
void maxHeapify(int A[], int i)
{
 
  int temp, largest, l, r;
 
  l  = left(i);
  r = right(i);
 
  if(l<=n && A[l]>A[i])
    {
      largest = l;
    }else{
    largest = i;
  }
 
  if(r<=n && A[r]>A[largest])
    {
      largest = r;
    }
 
  if(largest != i)
    {
      temp = A[i];
      A[i] = A[largest];
      A[largest] = temp;
     
      maxHeapify(A, largest);
    }
}
 
void buildMaxHeap(int A[])
{
 
  int i;
  for(i=n/2;i!=0;i--)
    {
      maxHeapify(A,i);
    }
}
 
 
int main()
{
 
  int j,k;
 
  scanf("%d",&n);
   
  for(j=1;j<=n;j++)
    {
      scanf("%d",&A[j]);
    }
 
  buildMaxHeap(A);
 
  for(k=1;k<=n;k++)
    {
      printf(" %d",A[k]);
    }
  printf("\n");
  return 0;
}