#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
auto max_poz_cifre = vector<int>(10);
auto br_pojavljivanja_cifara = vector<int>(10);
vector<int> unete_cifre;
int n;
bool probaj_povecaj() {
	for (int i = 0; i < n; i++)
	{
		int tr_cifra = unete_cifre[i];
		for (int j = 9; j > tr_cifra; j--)
		{
			if (max_poz_cifre[j] > i) //Cifra je desno od trenutne i veca
			{
				int temp = unete_cifre[i];
				unete_cifre[i] = unete_cifre[max_poz_cifre[j]];
				unete_cifre[max_poz_cifre[j]] = temp;
				return true;
			}
		}
	}
	return false;
}
void ispisi_cifre() {
	ios::sync_with_stdio(false);
	for (int cifra : unete_cifre) {
		cout << cifra << " ";
	}
}
bool ima_bar_dve_neke_cifre() {
	return any_of(br_pojavljivanja_cifara.begin(), br_pojavljivanja_cifara.end(), [](int i) {return i > 1; });
}
void zameni_poslednje_dve() {
	int temp = unete_cifre[n - 2];
	unete_cifre[n - 2] = unete_cifre[n - 1];
	unete_cifre[n - 1] = temp;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> n;
	unete_cifre = vector<int>(n);
	for (int i = 0; i < n; i++)
	{
		int uneta_cifra;
		cin >> uneta_cifra;
		unete_cifre[i] = uneta_cifra;
		br_pojavljivanja_cifara[uneta_cifra]++;
		max_poz_cifre[uneta_cifra] = max(max_poz_cifre[uneta_cifra], i);
	}
	bool uspeo_poveca = probaj_povecaj();
	if (!uspeo_poveca){
		if (!ima_bar_dve_neke_cifre()) {
			zameni_poslednje_dve();
		}
	}
	ispisi_cifre();
	return 0;
}