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

int p(int i){return i/2;}
int l(int i){return 2*i;}
int r(int i){return 2*i+1;}

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

int n;

int main(){
  int i,*A;

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

  for(i=n/2;i>=1;i--) maxHeapify(A,i);

  for(i=1;i<=n;i++){
    printf(" %d",A[i]);
    // if(i!=n) printf(" ");
  }
  printf("\n");

  return 0;

}

void maxHeapify(int *A,int i){
  int lft,rgh,max;
  lft=l(i);
  rgh=r(i);

  if(lft <= n && A[lft]>A[i]) max=lft;
  else max=i;
  if(rgh <=n && A[rgh]>A[max]) max=rgh;

  if(max!=i){
    swap(&A[max],&A[i]);
    maxHeapify(A,max);
  }
}

void swap(int *a,int *b){
  int buf;
  buf=*a;
  *a=*b;
  *b=buf;
}

