#include <stdio.h>
#include <stdlib.h>
int main()
{
	int n, i, j, x = -1, y = -1, t;
	scanf("%d", &n);
	int a[n], b[n];
	for(i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
		b[i] = a[i];
	}
	for(i = 0; i < n; i++)
	{
		for(j = 0; j < n; j++)
		{
			if(b[j] < b[i])
			{
				t = b[i];
				b[i] = b[j];
				b[j] = t;
			}
		}
	}
	if(lepota(n, a) == lepota(n, b))
	{
		if(dvaista(n, a))
		{
			x = lepP(n, a);
			y = lepD(n, a);	
		}
		else
		{
			x = n - 2;
			y = n - 1;
		}
	}
	else
	{
		x = zaX(n, a);
		y = zaY(n, a);
	}
	t = a[x];
	a[x] = a[y];
	a[y] = t;
	for(i = 0; i < n; i++)
		printf("%d ",a[i]);
	
	return 0;
}

int lepota(int n, int b[])
{
	int i, l = 0;
	for(i = 0; i < n; i ++) 
	{
		l += b[i];
		l *= 10;
	}
	return l /= 10;
}

int dvaista(int n, int b[])
{
	int i;
	for(i = 0; i < n - 1; i++)
	{
		if(b[i] == b[i+1])
			return 1;
	}
	return 0;
}

int lepP(int n, int b[])
{
	int i;
	for(i = 0; i < n - 1; i++)
	{
		if(b[i] == b[i+1])
			return i;
	}
}

int lepD(int n, int b[])
{
	int i;
	for(i = 0; i < n - 1; i++)
	{
		if(b[i] == b[i+1])
			return i+1;
	}
}

int zaX(int n, int b[])
{
	int i, j;
	for(i = 0; i < n; i++)
	{
		for(j = n - 1; j >= i; j--)
		{
			if(b[i] < b[j])
			{
				return i;
			}
		}
	}
}

int zaY(int n, int b[])
{
	int i, j;
	for(i = zaX(n, b); i < n; i++)
	{
		for(j = n - 1; j >= i; j--)
		{
			if(b[i] < b[j])
			{
				return j;
			}
		}
	}
}

int max(int n, int b[])
{
	int i, t = b[0];
	for(i = 1; i < n; i++)
	{
		if(b[i] > t)
			t = b[i];
	}
	
	return t;
}

int maxY(int n, int b[])
{
	int i, t = max(n, b);
	for(i = n - 1; i >= 0; i--)
	{
		if(b[i] == t)
			return i;
	}
}