#include <iostream> 
#include <stdio.h>
using namespace std;
long long n;
long long r;
void spojUredi(long long a[],long long l, long long d){ 
    if(l>=d) return;
    long long s=(l+d)/2;
    static long long b[1000000];
    long long i=l,j=s+1,k=0;
    spojUredi(a,l,s);
    spojUredi(a,s+1,d);
    while(i<=s&&j<=d)
    if(a[i]<a[j]) b[k++]=a[i++];
    else{ b[k++]=a[j++];
        r+=s-i+1;
    }
    while (i<=s){
    	b[k++]=a[i++];
	} 
    while(j<=d){
    	b[k++]=a[j++];
	} 
    for(long long p=0;p<=d-l;p++){
    	a[p+l]=b[p];
	} 
}

long long lepota(long long a[],long long n){
	long long b[n+1];
	for(long long i=0;i<n;i++){
		b[i]=a[i];
	}
	r=0;
	spojUredi(b,0,n-1);
	return r;
}



int main(){
	bool obrnut=false;
    scanf("%d", &n);
    long long a[n+1],b[n+1],niz[n+1];
    for(long long i=0;i<n;i++) {
    	scanf("%d", &a[i]);
	}
	if(n==2){
		cout<<a[1]<<" "<<a[0];
	}
	else{
		long long min=10000000000000000000000;
		r=lepota(a,n);
		long long k=(n*(n-1)/2)-r;
		if (r==0 or k==0){
			long long i=0;
			while(a[i]!=a[i+1] and i<n-1) i++;
			if(i<n-1)swap(a[i],a[i+1]);
			else swap(a[0],a[1]);
			for(i=0;i<n;i++) cout<<a[i]<<" ";
			return 0;
		}
		if(k<r){
			obrnut=true;
			for(long long i=0;i<n;i++){
				b[i]=a[n-i-1];
			}
			for(long long i=0;i<n;i++){
				a[i]=b[i];
			}
		}
		for(long long i=0;i<n-1;i++){
			for(long long j=i+1;j<n;j++){
				for(long long i=0;i<n;i++) b[i]=a[i];
				swap(a[i],a[j]);
				long long k=lepota(a,n);
				if(k<min){
					min=k;
					for(long long p=0;p<n;p++){
						niz[p]=a[p];
					}
				}
				for(long long i=0;i<n;i++) a[i]=b[i];
			}
		}
		if (obrnut)	for(long long i=0;i<n;i++) cout<<niz[n-1-i]<<" ";
		else for(long long i=0;i<n;i++)	cout<<niz[i]<<" ";
	}
	return 0;
}