#include <stdio.h>
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 maxH(int a[], int i){
  int M;
  int k, l, r;
  l=left(i);
  r=right(i);

  if(l<=H && a[l]>a[i]){
    M=l;
  }
  else{
    M=i;
  }
  if(r<=H && a[r]>a[M]){
    M=r;
  }

  if(M!=i){
    k=a[i];
    a[i]=a[M];
    a[M]=k;
    maxH(a, M);
  }
}

int main(){
  int  i, j, a[500000];
  scanf("%d", &H);

  for(i=1;i<=H;i++){
    scanf("%d", &a[i]);
  }
  
  for(i=H;i>=1;i--){
    maxH(a,i);
  }
  for(i=1;i<H;i++){
    printf(" %d",a[i]);  
  }
  printf(" %d\n",a[H]);
  return 0;
}

