#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

short niz[1000001];

int main()
{
    int maxi = 0, n;
    short maxx = 0, old;
    bool pom = 0;

    scanf("%d", &n);

    if(n == 2)
    {
        scanf("%hd %hd", &maxx, &old);
        printf("%hd %hd", old, maxx);
        return 0;
    }

    for(int i = 0; i < n; i++)
    {
        scanf("%hd", niz + i);

        if(!i)
            old = niz[i];

        if(old < niz[i])
        {
            pom = 1;
            maxx = niz[i];
            maxi = i;
        }

        old = niz[i];

        if(pom && niz[i] >= maxx)
        {
            maxx = niz[i];
            maxi = i;
        }
    }

    if(!pom)
    {
        for(int i = 1; i < n; i++)
            if(niz[i - 1] == niz[i])
            {
                for(i = 0; i < n; i++)
                    printf("%d ", niz[i]);

                return 0;
            }

        swap(niz[n - 1], niz[n - 2]);

        for(int i = 0; i < n; i++)
            printf("%d ", niz[i]);

        return 0;
    }

    for(int i = 0; i < maxi; i++)
        if(niz[i] < maxx)
        {
            swap(niz[i], niz[maxi]);

            for(i = 0; i < n; i++)
                printf("%d ", niz[i]);

            return 0;
        }

    return 0;
}