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

using namespace std;

int main()
{
    long N;
    scanf("%ld", &N);
    long* niz = (long*) malloc(sizeof(long) * N);
    long* najveciIspred = (long*) malloc(sizeof(long) * N);
    long* indexNajveceg = (long*) malloc(sizeof(long) * N);

    for(long i = 0; i < N; i++)
    {
        scanf("%ld",&niz[i]);
    }

    najveciIspred[N - 1] = -1;
    indexNajveceg[N - 1] = -1;

    for(long i = N - 2; i >= 0; i--)
    {
        if(niz[i + 1] > najveciIspred[i + 1])
        {
            najveciIspred[i] = niz[i + 1];
            indexNajveceg[i] = i + 1;
        }
        else
        {
            najveciIspred[i] = najveciIspred[i + 1];
            indexNajveceg[i] = indexNajveceg[i + 1];
        }
    }

    bool gotovo = false;
    for(long i = 0; i < N; i++)
    {
        if(i + 2 >= N && !gotovo)
        {
            long temp = niz[i];
            niz[i] = niz[i + 1];
            niz[i + 1] = temp;
            gotovo = true;
        }
        if(!gotovo)
        {
            if(niz[i] < najveciIspred[i])
            {
                long temp = niz[i];
                niz[i] = niz[indexNajveceg[i]];
                niz[indexNajveceg[i]] = temp;
                gotovo = true;
            }
        }
        printf("%ld ", niz[i]);
    }

}