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

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

int h;

int main(){
  int i;
  int *node;

  scanf("%d", &h);

  node = malloc(sizeof(int)*h + 1);
 
  for(i = 1; i <= h; i++) scanf("%d", &node[i]);

  buildMaxHeap(node);

  for(i = 1; i <= h; i++) printf(" %d", node[i]);

  printf("\n");

  return 0;
}


void maxHeapify(int *A, int i){
  int largest;
  int temp;
  int r, l;

  l = i*2;
  r = i*2+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);
  }
}

void buildMaxHeap(int *A){
  int i;

  for(i = h/2; i > 0; i--) maxHeapify(A, i);
}

