#include<bits/stdc++.h>
#define maxn 100005
#define pb push_back
using namespace std;

int n;
int a[maxn];
int maxx[maxn]; // najdalja pozicija jednaka max desno od nekog i

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

    cin>>n;
    for(int i=0;i<n;i++)cin>>a[i];

    for(int i=n-1;i>=0;i--)
    {
        if(i == n-1)maxx[i] = -1;
        else
        {
            maxx[i] = maxx[i+1];
            if(maxx[i] == -1)
            {
                maxx[i] = i+1;
            }
            else if(a[maxx[i]] < a[i+1])
            {
                maxx[i] = i+1;
            }
        }
    }

    bool t = false;
    for(int i=0;i<n;i++)
    {
        if(maxx[i]!=-1 && a[maxx[i]] > a[i])
        {
            swap(a[i],a[maxx[i]]);
            t = true;
            break;
        }
        if(i+1<n && a[i] == a[i+1])
        {
            t = true;
        }
    }

    if(!t)
    {
        swap(a[n-1],a[n-2]);
    }


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