#include<stdio.h>
#define MAX 2000000

int H;

int parent(int i){ return i/2; }
int left(int i){ return 2*i; }
int right(int i){ return (2*i)+1; }

void maxHeapify(int A[], int i){
  int l, r, largest, tmp;
  l = left(i);
  r = right(i);
  if( l <= H && A[l] > A[i] ) largest = l;
  else largest = i;
  
  if( r <= H && A[r] > A[largest] ) largest = r;

  if( largest != i ){
    tmp = A[i];
    A[i] = A[largest];
    A[largest] = tmp;
    maxHeapify(A, largest);
  }
}

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

int main(){
  int i, A[MAX+1];

  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("%d\n",A[H]);

  return 0;
}

