#include<iostream>
using namespace std;
int merge(int *a ,int s ,int mid, int e){
int i=s;
int temp[100000]={0};
int j=mid;
int count=0;
int k=s;
while(i<=(mid-1) && j<=e){
if(a[j]>=a[i]) temp[k++] = a[i++];
else{
count+=(mid-i);
temp[k++] = a[j++];
}
}
while(i<=(mid-1))temp[k++]=a[i++];
while(j<=e)temp[k++]=a[j++];
for(int i=s;i<=e;i++)a[i]=temp[i];
cout<<"count when start is "<<s<<" end is "<< e<<" = "<<count<<" ";
return count;
}
int ms(int *a , int s , int e){
int ans=0;
int right=0,left=0,cross=0;
if(e>s){
int mid = (s+e)/2;
left =ms(a,s,mid);
left+= ms(a,mid+1,e);
left+= merge(a,s,mid+1,e);
ans= left + right + cross;
cout<<"left= "<<left<<endl;
}
return ans;
}
int main() {
int t;
cin>>t;
while(t--){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++) cin>>a[i];
cout<<ms(a,0,n-1)<<endl;
for(int i=0;i<n;i++) cout<<a[i]<<" ";
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWVyZ2UoaW50ICphICxpbnQgcyAsaW50IG1pZCwgaW50IGUpewogIGludCBpPXM7CiAgaW50IHRlbXBbMTAwMDAwXT17MH07CiAgaW50IGo9bWlkOwogIGludCBjb3VudD0wOwogIGludCBrPXM7CiAgd2hpbGUoaTw9KG1pZC0xKSAmJiBqPD1lKXsKICAgICBpZihhW2pdPj1hW2ldKQl0ZW1wW2srK10gPSBhW2krK107CiAgICAgZWxzZXsKICAgICAJY291bnQrPShtaWQtaSk7CiAgICAgCXRlbXBbaysrXSA9IGFbaisrXTsKICAgICB9CiAgfQogIAogIHdoaWxlKGk8PShtaWQtMSkpdGVtcFtrKytdPWFbaSsrXTsKICB3aGlsZShqPD1lKXRlbXBbaysrXT1hW2orK107CiAgZm9yKGludCBpPXM7aTw9ZTtpKyspYVtpXT10ZW1wW2ldOwogIAogIAogIGNvdXQ8PCJjb3VudCB3aGVuIHN0YXJ0IGlzICI8PHM8PCIgZW5kIGlzICI8PCBlPDwiID0gIjw8Y291bnQ8PCIgIjsKICByZXR1cm4gY291bnQ7Cn0KCmludCBtcyhpbnQgKmEgLCBpbnQgcyAsIGludCBlKXsKICBpbnQgYW5zPTA7CiAgaW50IHJpZ2h0PTAsbGVmdD0wLGNyb3NzPTA7CiAgaWYoZT5zKXsKICBpbnQgbWlkID0gKHMrZSkvMjsKICAKICBsZWZ0ID1tcyhhLHMsbWlkKTsKICBsZWZ0Kz0gbXMoYSxtaWQrMSxlKTsKICBsZWZ0Kz0gbWVyZ2UoYSxzLG1pZCsxLGUpOwogIAogIGFucz0gbGVmdCArIHJpZ2h0ICsgIGNyb3NzOwogIGNvdXQ8PCJsZWZ0PSAiPDxsZWZ0PDxlbmRsOwogIH0KICByZXR1cm4gYW5zOwp9CgoKaW50IG1haW4oKSB7CiAgaW50IHQ7CiAgY2luPj50OwogIHdoaWxlKHQtLSl7CiAgICBpbnQgbjsKICAgIGNpbj4+bjsKICAgIGludCBhW25dOwogICAgZm9yKGludCBpPTA7aTxuO2krKykgIGNpbj4+YVtpXTsKICAgIAogICAgY291dDw8bXMoYSwwLG4tMSk8PGVuZGw7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKQljb3V0PDxhW2ldPDwiICI7CiAgfQoJcmV0dXJuIDA7Cn0=