#include <stdio.h>
#include <string.h>
using namespace std;
const int mm = 1009;
int f[mm],nCount;
void Merge(int l,int mid1,int mid2,int r,int*f)
{
int t[mm],pos = 0,i=l,j=mid2;
while(i <= mid1 && j <= r)
{
if(f[i]<=f[j])
t[pos++] = f[i++];
else
{
t[pos++] = f[j++];
//i位后的都比f[j] 大
nCount += mid1-i+1;//j-mid2+1;
}
}
while(i <= mid1)
t[pos++] = f[i++];
while(j <= r)
t[pos++] = f[j++];
for(int i=0;i<pos;++i)
f[l+i] = t[i];
}
void MergeSort(int l,int r,int*f)
{
int mid = (l+r)/2;
if(l == r)
return;
MergeSort(l,mid,f);
MergeSort(mid+1,r,f);
Merge(l,mid,mid+1,r,f);
}
int main()
{
int n;
while(~scanf("%d",&n))
{
for(int i=0;i<n;++i)
scanf("%d",&f[i]);
nCount = 0;
MergeSort(0,n-1,f);
printf("ni: %d\n",nCount);
for(int i=0;i<n;++i)
printf("%d ",f[i]);
putchar('\n');
}
return 0;
}