#include <iostream>
using namespace std;

int main()
{
    int n, najveci = -1, indeks, indeks2, temp;
    cin >> n;
    bool provera = true, k = true, isti = true;
    int* x = new int[n];
    for(int i = 0; i < n; i++) {
        cin >> x[i];
        if(i && (x[i] > x[i - 1]))
            k = false;
        if(i && (x[i] == x[i - 1]))
            isti = false;
        if(najveci <= x[i]) {
            najveci = x[i];
            indeks = i;
        }
    }
    if(k) {
        if(isti) {
            temp = x[n - 2];
            x[n - 2] = x[n - 1];
            x[n - 1] = temp;
        }
        for(int i = 0; i < n; i++) {
            cout << x[i] << " ";
        }
        return 0;
    }
    if(indeks) {
        for(int i = 0; i < indeks; i++) {
            if(najveci > x[i]) {
                temp = x[i];
                x[i] = x[indeks];
                x[indeks] = temp;
                provera = false;
                break;
            }
        }
    }
    while(provera) {
        najveci = -1;
        for(int i = n - 1; i >= 0; i--) {
            if(najveci < x[i] && x[i] < x[indeks]) {
                najveci = x[i];
                indeks2 = i;
            }
        }
        if(indeks2) {
            for(int i = 0; i < indeks2; i++) {
                if(najveci > x[i]) {
                    temp = x[i];
                    x[i] = x[indeks2];
                    x[indeks2] = temp;
                    provera = false;
                    break;
                }
            }
        }
        indeks = indeks2;
    }
    for(int i = 0; i < n; i++) {
        cout << x[i] << " ";
    }
    delete[] x;
    return 0;
}