#include<bits/stdc++.h>

using namespace std;
int n;
int a[1000008];

struct Sl {
    int vrednost;
    int poz;
};

Sl d[1000009];

void dinamicko(int n) {
    d[n - 1].vrednost = -1;
    d[n - 1].poz = -1;
    for (int i = n - 2; i >= 0; i--) {
        if (a[i] < a[i + 1]) {
            if (a[i + 1] < d[i + 1].vrednost) {
                d[i].vrednost = d[i + 1].vrednost;
                d[i].poz = d[i + 1].poz;
            }
            else {
                d[i].vrednost = a[i + 1];
                d[i].poz = i + 1;
            }
        }
        else if (a[i] < d[i + 1].vrednost) {
            d[i].vrednost = d[i + 1].vrednost;
            d[i].poz = d[i + 1].poz;
        }
        else {
            d[i].vrednost = -1;
            d[i].poz = -1;
        }

    }

    //for (int i = 0; i < n; i++)
      //  cout << d[i] << " ";

    //cout << endl;
}

int main () {
    cin >> n;
    int maximum = -1;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        if (a[i] > maximum)
            maximum = a[i];
    }
    
    if (n == 2) {
        cout << a[1] << " " << a[0] << endl;
        return 0;
    }

    dinamicko(n);
    
    int i = 0;
    while (a[i] == maximum) i++;
    int tmp = a[i];
    swap(a[i], a[d[i].poz]);
    
    for (int i = 0; i < n; i++)
        cout << a[i] << " ";
        
    cout << endl;
    
    return 0;

}