#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    int br[10]{0,0,0,0,0,0,0,0,0,0};
    cin>>n;
    int niz[n];
    int copy[n];
    for(int j =0; j<n; j++){
        cin>>niz[j];
        copy[j]= niz[j];
        br[niz[j]]++;
    }
    
    if(n==2){
        swap(niz[0],niz[1]);
        for(int y=0; y<n; y++){
        cout<<niz[y]<<" ";
        }
        return 0;
    }
    
    
    int max = -1; 
    int max_poz = -1; 
    int l_poz = -1; 
    int d_poz = -1; 
  
    
    for (int i = n - 1; i >= 0; i--) { 
  
        
        if (niz[i] > max) { 
            max = niz[i]; 
            max_poz = i; 
            continue; 
        } 
  
         
        if (niz[i] < max) { 
            l_poz = i; 
            d_poz = max_poz; 
        } 
    } 

    swap(niz[l_poz], niz[d_poz]);
    
    
    bool b=true;
    for(int x=0; x<n; x++){
        if(niz[x]!=copy[x])b=false;
    }
    
    
    if(b==true){
        for(int l=0;l<10;l++){
            if(br[l]>1)b=false;
        }
    }
   

    if(b==true){
        swap(niz[n-2],niz[n-1]);
    }
    
    for(int y=0; y<n; y++){
        cout<<niz[y]<<" ";
    }
    
}