#include<iostream>
#define maxn int(3e5)+1
using namespace std;
long long n,a[maxn],b[maxn],ans;
void cdq(int l,int r){
int mid=(l+r)/2;
if(l>=r)return;
cdq(l,mid);
cdq(mid+1,r);
int sl=l,sr=mid+1,k=0;
while(sl<=mid&&sr<=r){
if(a[sl]>a[sr]){
ans+=(mid-sl+1);
b[++k]=a[sr++];
}else{
b[++k]=a[sl++];
}
}
while(sl<=mid)a[++k]=b[sl++];
while(sr<=r)a[++k]=b[sr++];
for(int i=l;i<=r;i++){
a[i]=b[i-l+1];
}
}
int main(){
cin>>n;
for(int i=n;i>0;i--){
cin>>a[i];
}
cdq(1,n);
for(int i=n;i>0;i--){
cout<<a[i]<<" ";
}
cout<<endl;
cout<<ans;
return 0;
}