#include <stdio.h>
main(){
long long N;
int A[1000000], B[1000000];
long long i, j;
long long Max, temp, Imax, Kmax;
//printf("Unesite broj knjiga N\n");
scanf("%lld", &N);
//printf("Unesite brojeve  knjiga N\n");
	for (i=0; i<N; i++){
		scanf("%d", &A[i]);
	}
	// Prva situacija kada je N=2
if (N==2){
	printf("%d %d", A[1], A[0] );
}
// Druga situacija kada je N=3
else if (N==3){
	if ((A[0]>=A[1])&&(A[0]>=A[2])){
		printf("%d %d %d", A[0], A[2], A[1] );
	}
	else if ((A[1]>=A[0])&&(A[1]>=A[2])){
		printf("%d %d %d", A[1], A[0], A[2] );
	}
	else {
		printf("%d %d %d", A[2], A[1], A[0] );
	}
}
// Treca situacija kada je N>3
else
{
	Max=A[0];
	Imax=0;
	for(i=1;i<N; i++){
		if(A[i]>=Max){
			Max=A[i];
			Imax=i;
		}
		
	}
//	printf("Maksimalni je %d\n", Max);
//	printf("\nIndeks maksimalnog broja je %d\n",Imax);



	if(A[0]!=Max){
		temp=A[0];
		A[0]=A[Imax];
		A[Imax]=temp;
	for (i=0; i<N; i++)
		
	{printf("%d ", A[i]);
	
		}
		
	}
	else {
		
		for(i=0; i<N; i++){
			if (A[i]!=Max){
				Kmax=i; 
				break;
				}
		}
		j=0;
		for(i=Kmax; i<N; i++){
				B[j]=A[i];
				j=j+1;
				
			}
		
	//	printf("Ima istih %d\n ", Kmax);
		// Izgled niza B
	//	for(i=0; i<N; i++){
			
		//	printf("%d ", B[i]);
			
			
	//	}
			Max=B[0];
			Imax=0;
			for(i=0;i<N-3; i++){
			if(B[i]>=Max){
			Max=B[i];
			Imax=i;}
		}
			temp=B[0];
			B[0]=B[Imax];
			B[Imax]=temp;
	
//	for(i=0; i<N; i++){
			
		//	printf("%d ", B[i]);

		
//	}
	// Stampanje niza:
	for(i=0;i<Kmax;i++){
		printf("%d ", A[i]);
	}
	for(i=0;i<N-Kmax;i++){
		printf("%d ", B[i]);
	}

}
}


	
	
	
	
	
	
	
	
	return 0;
}