#include <iostream>

using namespace std;

int main() {
	int n,imax;
	bool leksikografski=true, dvaista=false; 
	int prvisjeban=-1;
	cin>>n;
	int niz[n];
	int cifre[10]={0};
	cin>>niz[0];
	for(int i=1;i<n;i++){
		cin>>niz[i];
		if((niz[i-1]<niz[i])&&leksikografski){ 
			leksikografski=false;
			prvisjeban=i;
		}
		cifre[niz[i]]++;
	}
	//leksikografski opadajuce
	if(leksikografski){
		for(int i=0;i<10;i++){
			if(cifre[i]>=2){ //da li imamo negde bar 2 iste
				dvaista=true;
				break;
			}
		}	
		if(dvaista==false){ //nemamo dve iste
			int pom = niz[n-1];
			niz[n-1] = niz[n-2];
			niz[n-2] = pom;
		}
	}
	else{ //ako nisu leksikografski
		imax=prvisjeban;
		for(int i=prvisjeban+1;i<n;i++){
			if(niz[imax]<=niz[i])
				imax=i;
		}
		int j=0;
		while(niz[j]>=niz[imax]){
			j++;
		}
		int pom = niz[j];
		niz[j]=niz[imax];
		niz[imax]=pom;		
	}	
	for(int i=0;i<n;i++){
		cout<<niz[i]<<" ";
	}
}