#include <iostream>

using namespace std;

int main()
{
    int N;
    cin >> N;
    int *knj = new int[N];
    int maxcifra = 0,maxindex = 0;

    if(N == 2)
    {
        cin >> knj[0] >> knj[1];
        cout << knj[1] << " " << knj[0] << " ";
        return 0;
    }

    for(int i = 0;i<N;i++)
    {
        cin >> knj[i];
        if(knj[i] >= maxcifra)
        {
            maxcifra = knj[i];
            maxindex = i;
        }
    }

    if(maxindex != 0)
    {
        knj[maxindex] = knj[0];
        knj[0] = maxcifra;

        for(int i = 0;i< N;i++)
        {
            cout << knj[i] << " ";
        }
        return 0;
    }

    int scdmax = 0,scdind = 0;
    int startpos = 1;
    bool hasfound = false;
    while(!hasfound)
    {
        int testmax = 0;
        int testind = 0;
        for(int i = startpos;i<N;i++)
        {
            if(i != N-2)
            {
                if(knj[i] == knj[i+1] && knj[i] >= testmax)
                {
                    testmax = knj[i];
                    testind = i;
                }
            }
            if(testmax < knj[i])
            {
                testmax = knj[i];
                testind = i;
            }

        }

        if(testind != startpos)
        {
            hasfound = true;
            scdind = testind;
            scdmax = testmax;
            break;
        }
        else
        {
            hasfound = false;
            startpos++;
            if(startpos == N-1)
            {
                scdmax = knj[N-2];
                scdind = N-2;
                hasfound = true;
            }
        }
    }

    knj[scdind] = knj[startpos];
    knj[startpos] = scdmax;

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

    return 0;
}