#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 ;
}
归并排序求数列的逆序数