#include <bits/stdc++.h>
using namespace std;

/*const int NMAX=2e6+11;

int n,a[NMAX],br[NMAX];
int k;

int main()
{
    int num=0;
    scanf("%d%d", &n, &k);
    for(int i=1;i<=n;i++) scanf("%d", &a[i]);
    for(int i=1;i<=n;i++) br[a[i]+n]++;
    for(int i=0;i<2*n;i++)
    {
        if(br[i]>=k) num++;
    }
    printf("%d\n", num);
    for(int i=0;i<2*n;i++)
    {
        if(br[i]>=k) printf("%d ", i-n);
    }
    return 0;
}*/

const int NMAX=1e6+7;

int n,a[NMAX],cnt[12];

int main()
{
    scanf("%d", &n);
    for(int i=0;i<n;i++) scanf("%d", &a[i]);
    int levo=-1;
    int desno=-1;
    int mx=-1;
    int mxind=-1;
    for(int i=n-1;i>=0;i--)
    {
        if(a[i]>mx)
        {
            mx=a[i];
            mxind=i;
            continue;
        }
        if(a[i]<mx)
        {
            levo=i;
            desno=mxind;
        }
    }
    if(levo==-1)
    {
        //for(int i=0;i<n;i++) printf("%d ", a[i]);
        for(int i=0;i<n;i++) cnt[a[i]]++;
        for(int i=0;i<9;i++) if(cnt[i]>1)
        {
            for(int i=0;i<n;i++) printf("%d ", a[i]);
            return 0;
        }
        swap(a[n-2],a[n-1]);
        for(int i=0;i<n;i++) printf("%d ", a[i]);
        return 0;
    }
    else
    {
        swap(a[levo],a[desno]);
        for(int i=0;i<n;i++) printf("%d ", a[i]);
        return 0;
    }
    return 0;
}