#include <stdio.h>
#include <stdlib.h>
//#include <math.h>

int main()
{
    //maxLepota je cifra dobijena kad se zamene m1,m2, tj najbolje resenje nadjeno
    int n,*knjige,i = 0,p,vecaDesno = 0, optimalno = 1, istiA = -1, istiB = -1;
    
    scanf("%d",&n);
    //printf("%d %d",n,k);
    
    knjige = (int*) calloc(n, sizeof(int));
    
    
    for(i=0;i<n;i++){
        scanf("%d",&knjige[i]);
        //printf("%d ",knjige[i]);
    }
    
    
    
    //Glavni deo
    
    //poenta je poredjati najvece brojeve na pocetku
    //a najmanje na kraj
    //naci naj optimalniji prvi korak za to, tj onaj sa naj jacim efektom
    //ako max cifra nije prva, zameniti sa prvom
    //ako je vec poredjan zameniti najmanju i zadnju?
    //ako je vec poredjan zameniti 2  iste ili najmanju(zadnju) sa predzadnjom
    
    
    
    /////////////////////////////
    if(n>2){
        //Nadji najvecu cifru desno od trenutne, ako je 9 nadjeno onda prekini pretragu (jer nema vece)
        for(i=0;i<n-1;i++){
            if(knjige[i] == 9)continue;
            
            //nije nadjena da kazemo
            vecaDesno = i;
            
            //nadji desnu manju
            for(p=i+1;p<n;p++){
                
                //ako nam trebaju iste kasnije
                if(istiA == -1 && knjige[i] == knjige[p]){
                    istiA = i;
                    istiB = p;
                }
                
                if(knjige[i]<knjige[p] && knjige[vecaDesno]<knjige[p]){
                    
                    vecaDesno = p;
                    
                    //ako je nadjena znaci nije optimalno
                    optimalno = 0;
                    
                    
                    if(knjige[p] == 9)break;
                }
            }
            
            if(vecaDesno != i)break;
        }
        
    }else{
        printf("%d %d",knjige[1],knjige[0]);
        return 0;
    }
    /////////////////////////////
    
    if(optimalno == 1 && istiA != -1){
        //nadji 2 iste i njih zameni
        i = istiA;
        vecaDesno = istiB;
    }else if(vecaDesno == i){
        //optimalno i nema istih, fallback zameni 2 najmanje
        i = n-2;
        vecaDesno = n-1;
    }
    
    //Zameniti
    p = knjige[i];
    knjige[i] = knjige[vecaDesno];
    knjige[vecaDesno] = p;
    
    /*
    //Izracunati max lepotu kao broj
    maxLepota = 0;
    for(i=0;i<n;i++){
        maxLepota += knjige[i] * pow(10,(n-i)-1);
    }
    */

    
    for(i=0;i<n;i++){
        printf("%d ",knjige[i]);
    }
    
    return 0;
}