#include <iostream> 
#include <stdio.h>
using namespace std;
int n;
long long r;
void spojUredi(int a[],int l, int d){ 
    if(l>=d) return;
    int s=(l+d)/2;
    static int b[1000000];
    int 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(int p=0;p<=d-l;p++){
    	a[p+l]=b[p];
	} 
}

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



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