#include<stdio.h>


using namespace std;

int cifre [1000000];

int main()
{
	
int brojevi [10]={0,0,0,0,0,0,0,0,0,0};
  int ne=0;
int uzastop=0;


	long n;
	int p;
	
	

	scanf("%ld",&n);
	
	scanf("%d",&p);
	brojevi[p]=1;
	cifre[0]=p;
	for (long i=1;i<n;i++)
	{
	scanf("%d",&p);
	
	if(p>cifre[i-1])
	ne=1;
	
	
	if(brojevi[p]==1)
	uzastop=1;
	else brojevi[p]=1;
	
	cifre[i]=p; 

    }
	
	

	
    
    
    int max;
    long ind;
	////ako je nesortirano vec
	if(ne)
	{
		for(long i=0;i<n-1;i++)
		{max=cifre[i+1];
		ind=i+1;
			
			for(long j=i+2;j<n;j++)
			{
			if(cifre[j]>=max)
			{max=cifre[j];
			ind=j;
				
			}
				
			}
			if(cifre[i]<max)
			{p=cifre[i];
			cifre[i]=max;
			cifre[ind]=p;
				
				break;
			}
			
				
		
			
		
		}
		
		
	}
	///ako je vec sortirano i ima uzastopne
	else if (uzastop)
	{
	;
	}
	///ako je vec sortirano i nema uzastopne
	else 
	{
		
		//ako nema uzastopnih istih brojeva
	p=cifre[n-1];
	cifre[n-1]=cifre[n-2];
	cifre[n-2]=p;
		
	}
	for(long i=0;i<n;i++)
		{printf("%d ",cifre[i]);
		}
	

	
	
	return 0;
}