#include <stdio.h>
#include<algorithm>

using namespace std;

 int *a, n;
 bool postoji = false;
 int r;

int main()
{

    scanf("%d", &n);

    a = new int[n];
    pair<int, int> br_redni[n];

    for(int i  =0; i < n; i++){
        scanf("%d", &a[i]);
        br_redni[i].first = a[i];
        br_redni[i].second = i;
    }

    if(n == 2){
        printf("%d %d", a[1], a[0]);
        return 0;
    }

    //int b[n];
    //for(int i = 0; i < n; i++) b[i] = a[i];

    sort(br_redni, br_redni + n);

    for(int i = 0; i < n; i++){
        if(a[i] < br_redni[n-i-1].first){
            if(br_redni[n-i-1].first != br_redni[n-i].first)
                swap(a[i] , a[br_redni[n-1-i].second]);
            else{
                r = n-i-1;
                while(br_redni[r].first == br_redni[r+1].first && r+1 < n)
                    r++;
                swap(a[i] , a[br_redni[r].second]);
            }

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

            return 0;
        }
        if(br_redni[i].first == br_redni[i+1].first && br_redni[i+1].first < n) postoji = true;//nije a nego br_redni[i]

    }

    if(postoji){
        for(int i = 0; i < n; i++)
            printf("%d ", a[i]);
        return 0;
    }
    else{
        swap(a[n-1], a[n-2]);
        for(int i = 0; i < n; i++)
            printf("%d ", a[i]);
        return 0;
    }







    return 0;
}