#include<stdio.h>

void maxHeapify(int *, int);
void buildMaxHeap(int *);

int H;
int A[500001];

int main()
{
  int i;

  scanf("%d", &H);
  for(i=1;i<=H;i++)
    {
      scanf("%d", &A[i]);
    }

  buildMaxHeap(A);

  for(i=1;i<=H;i++)
    {
      printf(" %d", A[i]);
    }
  printf("\n");
  
  return 0;
}

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

void buildMaxHeap(int A[])
{
  int i;
  for(i=H/2;i>=1;i--)
    {
      maxHeapify(A, i);
    }
}


