using System;
class Program
{
    static void Swap(ref int a, ref int b)
    {
        int x = a;
        a = b;
        b = x;
    }
    static void IspisiNiz(int[] niz)
    {
        for (int i = 0; i < niz.Length; i++)
        {
            Console.Write(niz[i] + " ");
        }
    }
    static void Main(string[] args)
    {
        int n = int.Parse(Console.ReadLine());
        string[] s = Console.ReadLine().Split(' ');
        int[] niz = new int[n];
        for (int i = 0; i < n; i++)
        {
            niz[i] = int.Parse(s[i]);
        }
        if (n == 2)
        {
            Console.WriteLine(niz[1] + " " + niz[0]);
            return;
        }
        for (int i = 0; i < n-1; i++)
        {
            int max = niz[i];
            int maxIndeks = 0;
            for (int j = i+1; j < n; j++)
            {
                if (niz[j] >= max)
                {
                    max = niz[j];
                    maxIndeks = j;
                }
            }
            if (max > niz[i])
            {
                Swap(ref niz[i], ref niz[maxIndeks]);
                IspisiNiz(niz);
                return;
            }
        }
        for (int i = 0; i < n - 1; i++)
        {
            int max = niz[i];
            int maxIndeks = 0;
            for (int j = i + 1; j < n; j++)
            {
                if (niz[j] >= max)
                {
                    max = niz[j];
                    maxIndeks = j;
                }
            }
            if (max == niz[i] && maxIndeks != i)
            {
                Swap(ref niz[i], ref niz[maxIndeks]);
                IspisiNiz(niz);
                return;
            }
        }
        Swap(ref niz[n - 1], ref niz[n - 2]);
        IspisiNiz(niz);
    }
}