#include <stdio.h>
#include <stdlib.h>

int H,*A;

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

int main(){
  int i;

  scanf("%d",&H);
  A = (int *)malloc(sizeof(int)*(H+1));

  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,k;
  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){
    k = A[i];
    A[i] = A[largest];
    A[largest] = k;
    maxHeapify(A, largest);
  }
} 
 

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