#include<iostream>
using namespace std;
int N,niz[1000005],b,MAX;
bool a=false,e=false;
int main(){
cin>>N;
for(int i=1;i<=N;i++){
    cin>>niz[i];
    if(niz[i]>=niz[i-1] and i!=1){
        a=true;
    }
}
if(!a){
       // cout<<"ovde,,"<<endl;
swap(niz[N],niz[N-1]);
    for(int i=1;i<=N;i++){
            cout<<niz[i]<<" ";
    }
    return 0;
}
else{
      //cout<<"ovde..........."<<endl;
 for(int i=1;i<=N;i++){
    for(int j=N;j>=i+1;j--)
    {
        if(niz[i]<niz[j] and niz[j]>MAX) {
                b=j;
                MAX=niz[j];
    //            swap(niz[i],niz[j]);
                e=true;
        }
    }
    if(e){
        swap(niz[i],niz[b]);
        break;
    }
  }
}
for(int i=1;i<=N;i++){
    cout<<niz[i]<<" ";
}
 return 0;
}