#include <bits/stdc++.h>;

using namespace std;

struct element
{
    int vrednost;
    int index;
};

element niz[1000010];
element pomNiz[1000010];

bool acompare(element e1, element e2)
{
    return ((e1.vrednost > e2.vrednost) || ((e1.vrednost == e2.vrednost) && (e1.index > e2.index)));
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N;
    cin >> N;

    for(int i = 0; i < N; i++)
    {
        int a;
        cin >> a;
        element e;
        e.vrednost = a;
        e.index = i;
        niz[i] = e;
        pomNiz[i] = e;
    }

    sort(pomNiz,pomNiz+N,acompare);

    int brojac = 0;

    if(N == 2)
    {
        cout << niz[1].vrednost<<" "<< niz[0].vrednost;
    }
    else
    {

        for(int i = 0; i < N; i++)
        {
            element max_el = pomNiz[i];

            if(max_el.vrednost > niz[i].vrednost)
            {
                element e1 = niz[i];
                int index1 = e1.index;
                element e2 = max_el;
                int index2 = e2.index;
                niz[index1] = e2;
                niz[index2] = e1;
                break;
            }
            else if(max_el.vrednost == niz[i].vrednost)
            {
                if(max_el.index != niz[i].index)
                {
                    element e1 = niz[i+1]; ///ono o cemu si mislio
                    int index1 = e1.index;
                    element e2 = max_el;
                    int index2 = e2.index;
                    niz[index1] = e2;
                    niz[index2] = e1;
                    break;
                }
                brojac++;
            }
        }

        if(brojac == N)  ///za npr 9 8 7 6 5 4 3 2 1
        {
            element e1 = niz[N-1];
            int index1 = e1.index;
            element e2 = niz[N-2];
            int index2 = e2.index;
            niz[index1] = e2;
            niz[index2] = e1;
        }

        for(int i = 0; i < N; i++)
        {
            cout<<niz[i].vrednost<<" ";
        }
    }



    return 0;
}