#include <iostream>
#include <stdio.h>
#include <vector>

#define MAXN 1000000

using namespace std;

void ispis(vector <int> &a)
{
    for(int i=0;i<a.size();i++)
        cout<<a[i]<<" ";
    cout<<endl;
}

bool nerastuci(vector <int> &a)
{
    for(int i=1;i<a.size();i++)
        if(a[i-1]<a[i])
            return false;
    return true;
}

bool opadajuci(vector <int> &a)
{
    for(int i=1;i<a.size();i++)
        if(a[i-1]<=a[i])
            return false;
    return true;
}

int main()
{
    int n;
    scanf("%d",&n);
    vector <int> a(n),m(n),p(n);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    //ispis(a);
    if(nerastuci(a)){
        if(opadajuci(a))
            swap(a[n-2],a[n-1]);
    }
    else
    {
        m[n-1]=a[n-1];
        p[n-1]=n-1;
        for(int i=n-2;i>=0;i--){
            if(m[i+1]>=a[i])
            {
                m[i]=m[i+1];
                p[i]=p[i+1];
            }
            else
            {
                m[i]=a[i];
                p[i]=i;
            }
        }
        //ispis(m);
        //ispis(p);
        for(int i=0;i<n-1;i++)
            if(a[i]<m[i+1])
            {
                swap(a[i],a[p[i+1]]);
                break;
            }
    }
    ispis(a);

    return 0;
}