#include <iostream>
#include <stdio.h>
using namespace std;
long long sum;
void add(int a[],int l,int m,int r) //歸併
{
int i,j,k,b[r-l+2];
i=l;j=m+1;
for (k=1;i<=m&&j<=r;k++)
{
if (a[i]<=a[j])
{
b[k]=a[i];
i++;
}
else
{
b[k]=a[j];
j++;
sum+=m-i+1;
}
}
while (i<=m) b[k++]=a[i++];
while (j<=r) b[k++]=a[j++];
i=1;
for (k=l;k<=r;k++) a[k]=b[i++];
}
void sortt(int a[],int l,int r) //遞歸排序
{
int m;
if (l<r)
{
m=(l+r)/2;
sortt(a,l,m);
sortt(a,m+1,r);
add(a,l,m,r);
}
}
int main()
{ int m,n,i,j,a[1100];
cin>>m;
for (i=1;i<=m;i++)
{
cin>>n;
for (j=1;j<=n;j++) cin>>a[j];
sum=0;
sortt(a,1,n);
cout<<"Scenario #"<<i<<":"<<endl<<sum<<endl<<endl;
}
return 0;
}
歸併排序求數列的逆序數