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

int uporedi(const void * a, const void * b) {
   return ( *(int*)a - *(int*)b );
}
int main()
{
    int n,t=0,p,g=0;
    scanf("%d",&n);
    int a[n];
    int b[n];
    for(int i = 0;i<n;i++){ scanf("%d",&a[i]); b[i]=a[i];}
    if(n == 2) printf("%d %d",a[1],a[0]);
    else{
        qsort(b,n,sizeof(int),uporedi);
       
        for(int i=0;i<n-1;i++){
            if(a[i]!=b[n-1-i]){
                for(int j=n-1;j>i;j--){
                    if(b[n-1-i] == a[j]){
                        p=a[i];
                        a[i]=a[j];
                        a[j]=p;
                        break;
                    }
                   
                }
                t=1;
                break;
            }
           
        }
        if(t==0){
            for(int  i = 0;i<n-1;i++){
                if(a[i]==a[i+1]){
                    g=1;
                    break;
                }
               
            }
            if(g==0){
                p=a[n-1];
                a[n-1]=a[n-2];
                a[n-2]=p;
            }
        }
        for(int i = 0;i<n;i++) printf("%d ",a[i]);
    }
    return 0;
}