#include <stdio.h>

int H;

void maxHeapify(int *A,int i)
{
  int l,r,largest;
  int temp;
  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)
    {
      temp = A[i];
      A[i] = A[largest];
      A[largest] = temp;
      maxHeapify(A,largest);
    }
 
}

int main()
{
  int A[1000000];
  int i;
  scanf("%d",&H);
  for(i = 1; i <= H;i++)
    {
      scanf("%d",&A[i]);
    }
  for(i = H/2;i >= 1 ;i--) //buildMaxHeap
    {
      maxHeapify(A,i);
    }
  for(i = 1; i <= H;i++)
    {
      printf(" %d",A[i]);
    }
  printf("\n");
  return 0;
}

