#include <iostream>

using namespace std;

int n, a[1000002],maxV = 0,maxA = 1, switched = 0;
int pocetnaTacka = 0;

int main()
{
    std::ios::sync_with_stdio(false);

    cin >> n;

    //Unesi vrednosti
    for(int i = 0;i < n;i++){
        cin >> a[i];
    }

    if(n == 1){
        cout << a[0];
        return 0;
    }

    while(switched == 0){
        //Nadji krajnji maksimum
        for(int i = pocetnaTacka;i < n;i++){
            if(a[i] >= maxV){
                maxV = a[i];
                maxA = i;
            }
        }

        for(int i = pocetnaTacka;i < maxA;i++){
            if(maxV > a[i]){
                int t = a[i];
                a[i] = maxV;
                a[maxA] = t;
                switched = 1;
                break;
            }
        }

        if(switched == 0){
            pocetnaTacka = maxA + 1;
            maxA = pocetnaTacka;
            maxV = a[pocetnaTacka];
        }else{
            break;
        }

        if(pocetnaTacka >= n - 1){
            break;
        }
    }

    if(switched == 0){
        //PROVERI DA LI IMA DVA ISTA SUSEDA:
        //U OVOM MOMENTU SMO SIGURNI DA JE NIZ OPADAJUCI

        int imaPar = 0;

        for(int i = 0;i < n - 1;i++){
            if(a[i] == a[i + 1]){
                imaPar = 1;
                break;
            }
        }

        if(imaPar == 0){
            int t = a[n - 1];
            a[n - 1] = a[n - 2];
            a[n - 2] = t;
        }
    }

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

    return 0;
}