#include<stdio.h>
#define H 500001
int n;
int largest = 0;
int A[H];
int left(i)
{
  return 2 * i;
}
int right(i)
{
  return 2 * i + 1;
}
void maxHeapify(int i)
{
  int l, r;
  int tmp;
  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)
    {
      tmp = A[i];
      A[i] = A[largest];
      A[largest] = tmp;
      maxHeapify(largest);
    }
}

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


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

