#include<stdio.h>
#define max 2000000

int h,A[max+1];

void	swap( int  *a , int  *b ){
	int	temp ;	/* テンポラリ-の変数（入れ物）を用意 */

	temp = *a ;	/* a 番地の中の数字を temp にコピ－する */

	*a = *b ;	/* a 番地の中に b 番地の数字をコピ－する */

	*b = temp ;	/* b 番地の中に temp の数字をコピ－する */
			/* これで a 番地 b 番地の中の数字が入れ替わります */
}

void maxHeapify(int i){
  int l,r,largest;
  l = 2*i;
  r = 2*i+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){
  swap(&A[i],&A[largest]);
  maxHeapify(largest);
}
}


int main(){
int i;
  scanf("%d",&h);

  for(i=1;i<=h;i++){
    scanf("%d",&A[i]);
  }

  for(i=h/2;i>=1;i--){
    maxHeapify(i);
  }

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

  return 0;
}

