#include <iostream>
#define LL long long
using namespace std;
//Here start=left and end=right
LL merge(LL a[], LL start, LL mid, int end, LL temp[])
{
LL i,j,k;
LL ans = 0;
j = mid+1;
/*Inversion Count logic: if an element found in left array(sorted) is greater
than all the remaining left elements are counted for inversion*/
for(k=start;k<=mid;k++)
{
while(j <= end)
{
if(a[k] > a[j])
j++;
else
break;
}
ans += j-(mid+1);
}
i=k=start;
j = mid+1;
while(i<=mid && j<=end)
{
if(a[i] < a[j])
temp[k++] = a[i++];
else
temp[k++] = a[j++];
}
while(i <= mid) temp[k++] = a[i++];
while(j <= end) temp[k++] = a[j++];
for(int i=start; i<=end; i++)
a[i] = temp[i];
return ans;
}
LL mergesort(LL a[], LL start, LL end, LL temp[])
{
LL lc,rc,mc;
if(start < end)
{
LL mid = (start + end)/2;
lc = mergesort(a, start, mid, temp);
rc = mergesort(a, mid+1, end, temp);
mc = merge(a, start, mid, end, temp);
return lc+rc+mc;
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
LL n;
cin>>n;
LL inv;
LL a[n];
LL temp[n];
for(LL i=0;i<n;i++)
{
cin>>a[i];
}
inv = mergesort(a,0,n-1,temp);
cout<<inv<<endl;
}
return 0;
}
CiAgICAjaW5jbHVkZSA8aW9zdHJlYW0+CiAgICAjZGVmaW5lIExMIGxvbmcgbG9uZwogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgIC8vSGVyZSBzdGFydD1sZWZ0IGFuZCBlbmQ9cmlnaHQKICAgIExMIG1lcmdlKExMIGFbXSwgTEwgc3RhcnQsIExMIG1pZCwgaW50IGVuZCwgTEwgdGVtcFtdKQogICAgewogICAgICAgIExMIGksaixrOwogICAgICAgIExMIGFucyA9IDA7CiAgICAgICAgaiA9IG1pZCsxOwogICAgICAgIC8qSW52ZXJzaW9uIENvdW50IGxvZ2ljOiBpZiBhbiBlbGVtZW50IGZvdW5kIGluIGxlZnQgYXJyYXkoc29ydGVkKSBpcyBncmVhdGVyIAogICAgICAgICAgdGhhbiBhbGwgdGhlIHJlbWFpbmluZyBsZWZ0IGVsZW1lbnRzIGFyZSBjb3VudGVkIGZvciBpbnZlcnNpb24qLwogICAgICAgIGZvcihrPXN0YXJ0O2s8PW1pZDtrKyspCiAgICAgICAgewogICAgICAgICAgICB3aGlsZShqIDw9IGVuZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoYVtrXSA+IGFbal0pCiAgICAgICAgICAgICAgICAgICAgaisrOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGFucyArPSBqLShtaWQrMSk7CiAgICAgICAgfQogICAgICAgIGk9az1zdGFydDsKICAgICAgICBqID0gbWlkKzE7CiAgICAgICAgd2hpbGUoaTw9bWlkICYmIGo8PWVuZCkKICAgICAgICB7CiAgICAgICAgICAgIGlmKGFbaV0gPCBhW2pdKQogICAgICAgICAgICAgICAgdGVtcFtrKytdID0gYVtpKytdOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB0ZW1wW2srK10gPSBhW2orK107CiAgICAgICAgfQogICAgICAgIHdoaWxlKGkgPD0gbWlkKSB0ZW1wW2srK10gPSBhW2krK107CiAgICAgICAgd2hpbGUoaiA8PSBlbmQpIHRlbXBbaysrXSA9IGFbaisrXTsKICAgICAgICBmb3IoaW50IGk9c3RhcnQ7IGk8PWVuZDsgaSsrKQogICAgICAgICAgICBhW2ldID0gdGVtcFtpXTsKICAgIAogICAgICAgIHJldHVybiBhbnM7CiAgICB9CiAgICBMTCBtZXJnZXNvcnQoTEwgYVtdLCBMTCBzdGFydCwgTEwgZW5kLCBMTCB0ZW1wW10pCiAgICB7CiAgICAgICAgTEwgbGMscmMsbWM7CiAgICAgICAgaWYoc3RhcnQgPCBlbmQpCiAgICAgICAgewogICAgCiAgICAgICAgICAgIExMIG1pZCA9IChzdGFydCArIGVuZCkvMjsKICAgICAgICAgICAgbGMgPSBtZXJnZXNvcnQoYSwgc3RhcnQsIG1pZCwgdGVtcCk7CiAgICAgICAgICAgIHJjID0gbWVyZ2Vzb3J0KGEsIG1pZCsxLCBlbmQsIHRlbXApOwogICAgICAgICAgICBtYyA9IG1lcmdlKGEsIHN0YXJ0LCBtaWQsIGVuZCwgdGVtcCk7CiAgICAgICAgICAgIHJldHVybiBsYytyYyttYzsKICAgICAgICB9CiAgICAKICAgIH0KICAgIGludCBtYWluKCkKICAgIHsKICAgICAgICBpbnQgdDsKICAgICAgICBjaW4+PnQ7CiAgICAgICAgd2hpbGUodC0tKQogICAgICAgIHsKICAgICAgICAgICAgTEwgbjsKICAgICAgICAgICAgY2luPj5uOwogICAgICAgICAgICBMTCBpbnY7CiAgICAgICAgICAgIExMIGFbbl07CiAgICAgICAgICAgIExMIHRlbXBbbl07CiAgICAgICAgICAgIGZvcihMTCBpPTA7aTxuO2krKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2luPj5hW2ldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGludiA9IG1lcmdlc29ydChhLDAsbi0xLHRlbXApOwogICAgICAgICAgICBjb3V0PDxpbnY8PGVuZGw7CiAgICAgICAgfQogICAgCiAgICAgICAgcmV0dXJuIDA7CiAgICB9