#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, maks=-1, maksIndeks, LIndex, RIndex, L, R;
    bool hasPair = false, isDescending=true;
    cin >> n;
    int niz[n], niz2[n];
    for(int i=0;i<n;i++)
    {
        cin >> niz[i];
        if(i && niz[i]==niz[i-1]){
            hasPair=true;
        }
        niz2[i]=-1;
    }
    for(int i=n-1;i>=0;i--)
    {
        niz2[i]=maks;
        if(niz[i]>maks)
        {
            maks=niz[i];
            maksIndeks=i;
        }
        if(niz[i]<niz2[i])
        {
            isDescending=false;
            LIndex=i;
            L=niz[LIndex];
            RIndex=maksIndeks;
            R=maks;
        }
    }
    if(isDescending)
    {
        if(hasPair)
        {
            for(int x:niz)cout << x << " ";
            return 0;
        }
        else
        {
            LIndex=n-2;
            L=niz[LIndex];
            RIndex=n-1;
            R=niz[RIndex];        }
    }
    niz[LIndex] = R;
    niz[RIndex] = L;
    for(int x:niz)cout << x << " ";    
    //for(int x : niz2)cout << x << " ";
    //cout << endl;
    //cout << L << " " << LIndex << " " << R << " " << RIndex << endl;
    return 0;
}