#include <iostream>
typedef long long int typex;
using namespace std;
long long int count,arr[200001];
void merge(typex p,typex q,typex r)
{
//first array has indices from p to q
//second array has indices from q to p
typex i,li,ri,n1,n2;
n1=q-p+1;
n2=r-q;
typex *lt= new typex [n1];
typex *rt= new typex [n2];//[q-(r+1)+1]
for(i=0;i<n1;i++)
{
lt[i]=arr[p+i];
}
for(i=0;i<n2;i++)
{
rt[i]=arr[q+1+i];
}
//left and right array is ready which is all ready sorted
//now we will merge
li=ri=0;i=p;
while(li<n1&&ri<n2)
{
if(lt[li]>rt[ri])
{
arr[i++]=rt[ri++];
count=count+n1-li;
}
else //right hand side elemnt is greater that is inversion pair
{
arr[i++]=lt[li++];
}
}
//inversion pairs have been counted till this stage, do not count again;
while(li<n1)
{
arr[i++]=lt[li++];
}
while(ri<n2)
{
arr[i++]=rt[ri++];
}
}
void mergesort(typex p,typex r)
{
if(p<r)
{
typex q=(p+r)/2;
mergesort(p,q);
mergesort(q+1,r);
merge(p,q,r);
}
}
int main()
{
int t;
long long int n,i;
cin>>t;
while(t--)
{
cin>>n;
for(i=0;i<n;i++)
{
cin>>arr[i];
}
count=0;
mergesort(0,n-1);
cout<<"\n"<<count;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgdHlwZXg7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmxvbmcgbG9uZyBpbnQgY291bnQsYXJyWzIwMDAwMV07CnZvaWQgbWVyZ2UodHlwZXggcCx0eXBleCBxLHR5cGV4IHIpCnsKCQoJLy9maXJzdCBhcnJheSBoYXMgaW5kaWNlcyBmcm9tIHAgdG8gcQoJLy9zZWNvbmQgYXJyYXkgaGFzIGluZGljZXMgZnJvbSBxIHRvIHAKICAgIHR5cGV4IGksbGkscmksbjEsbjI7CiAgICBuMT1xLXArMTsKICAgIG4yPXItcTsKICAgIHR5cGV4ICpsdD0gbmV3IHR5cGV4IFtuMV07CiAgICB0eXBleCAqcnQ9IG5ldyB0eXBleCBbbjJdOy8vW3EtKHIrMSkrMV0KICAgIGZvcihpPTA7aTxuMTtpKyspCiAgICB7CiAgICAgICAgbHRbaV09YXJyW3AraV07CiAgICB9CiAgICBmb3IoaT0wO2k8bjI7aSsrKQogICAgewogICAgICAgIHJ0W2ldPWFycltxKzEraV07CiAgICB9CgogICAgLy9sZWZ0IGFuZCByaWdodCBhcnJheSBpcyByZWFkeSB3aGljaCBpcyBhbGwgcmVhZHkgc29ydGVkCiAgICAvL25vdyB3ZSB3aWxsIG1lcmdlCiAgICBsaT1yaT0wO2k9cDsKICAgIHdoaWxlKGxpPG4xJiZyaTxuMikKICAgIHsKICAgICAgICBpZihsdFtsaV0+cnRbcmldKQogICAgICAgIHsKICAgICAgICAgICAgYXJyW2krK109cnRbcmkrK107CiAgICAgICAgICAgIGNvdW50PWNvdW50K24xLWxpOwogICAgICAgIH0KICAgICAgICAgZWxzZSAvL3JpZ2h0IGhhbmQgc2lkZSBlbGVtbnQgaXMgZ3JlYXRlciB0aGF0IGlzIGludmVyc2lvbiBwYWlyCiAgICAgICAgewogICAgICAgICAgICBhcnJbaSsrXT1sdFtsaSsrXTsKICAgICAgICB9CiAgICB9Ci8vaW52ZXJzaW9uIHBhaXJzIGhhdmUgYmVlbiBjb3VudGVkIHRpbGwgdGhpcyBzdGFnZSwgZG8gbm90IGNvdW50IGFnYWluOwogICAgd2hpbGUobGk8bjEpCiAgICB7CiAgICAgICAgYXJyW2krK109bHRbbGkrK107CgogICAgfQoKICAgIHdoaWxlKHJpPG4yKQogICAgewogICAgICAgIGFycltpKytdPXJ0W3JpKytdOwogICAgfQoKfQp2b2lkIG1lcmdlc29ydCh0eXBleCBwLHR5cGV4IHIpCnsKICAgIGlmKHA8cikKICAgIHsKICAgICAgICB0eXBleCBxPShwK3IpLzI7CiAgICAgICAgbWVyZ2Vzb3J0KHAscSk7CiAgICAgICAgbWVyZ2Vzb3J0KHErMSxyKTsKICAgICAgICBtZXJnZShwLHEscik7CiAgICB9CgoKfQppbnQgbWFpbigpCnsKICAgIGludCB0OwogICAgbG9uZyBsb25nIGludCBuLGk7CiAgICBjaW4+PnQ7CiAgICB3aGlsZSh0LS0pCiAgICB7CiAgICAgICAgY2luPj5uOwogICAgICAgIGZvcihpPTA7aTxuO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbj4+YXJyW2ldOwogICAgICAgIH0KICAgICAgICBjb3VudD0wOwogICAgICAgIG1lcmdlc29ydCgwLG4tMSk7CiAgICAgICAgY291dDw8IlxuIjw8Y291bnQ7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=