  #include<stdio.h>
  #define MAX 500000

  int H,A[MAX+1];

  void swap(int *a ,int *b){
  	int	temp;
  	temp = *a;
  	*a = *b;
  	*b = temp;
  }
  int Left(int i){
    return 2*i;
  }
  int Right(int i){
    return 2*i+1;
  }

  void maxH(int i){
    int l,r,larg;
    l=Left(i);
    r=Right(i);

    if(l<=H && A[l]>A[i])larg=1;
    else larg=i;
    if(r<=H && A[r]>A[larg])larg=r;
    if(larg!=i){
      swap(&A[i],&A[larg]);
      maxH(larg);
    }
  }

  int main(){
    int i;
    scanf("%d",&H);
    for(i=1;i<=H;i++)scanf("%d",&A[i]);
    for(i=H/2;i>=1;i--)maxH(i);
    for(i=1;i<=H;i++)printf(" %d",A[i]);
    printf("\n");

    return 0;
  }