#include <iostream>
#include <stdio.h>
#include <string.h>
#define maxn 100000 + 10
using namespace std;
int c[maxn];
int num[maxn];
int lsmall[maxn],rmax[maxn];
int n;
int lowbit( int x)
{
return x&(-x);
}
int get_sum(int a)//和一般的BIT询问没区别
{
int ans=0;
while(a)
{
ans+=c[a];
a-=lowbit(a);
}
return ans;
}
void update(int pos)//这个update函数只要一个参数 因为都是加1
{
while(pos<maxn)
{
c[pos]++;
pos+=lowbit(pos);
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for( int i = 1; i<= n; i++)
scanf("%d",&num[i]);
memset(c,0,sizeof(c));
for( int i = 1; i < n; i++)
{
update(num[i]);
lsmall[i] = get_sum(num[i]-1);
}
memset(c,0,sizeof(c));
for( int i = n; i>1; i--)
{
update(num[i]);
rmax[i] = (n-i+1) - get_sum(num[i]);
}
long long int sum = 0;
for( int i = 2; i<=n; i++)
{
sum += (long long int )(lsmall[i] * rmax[i]);
sum += (long long int )(((i-1)-lsmall[i]) * (n-i-rmax[i]));
}
cout<<sum<<endl;
}
}
#include <stdio.h>
#include <string.h>
#define maxn 100000 + 10
using namespace std;
int c[maxn];
int num[maxn];
int lsmall[maxn],rmax[maxn];
int n;
int lowbit( int x)
{
return x&(-x);
}
int get_sum(int a)//和一般的BIT询问没区别
{
int ans=0;
while(a)
{
ans+=c[a];
a-=lowbit(a);
}
return ans;
}
void update(int pos)//这个update函数只要一个参数 因为都是加1
{
while(pos<maxn)
{
c[pos]++;
pos+=lowbit(pos);
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for( int i = 1; i<= n; i++)
scanf("%d",&num[i]);
memset(c,0,sizeof(c));
for( int i = 1; i < n; i++)
{
update(num[i]);
lsmall[i] = get_sum(num[i]-1);
}
memset(c,0,sizeof(c));
for( int i = n; i>1; i--)
{
update(num[i]);
rmax[i] = (n-i+1) - get_sum(num[i]);
}
long long int sum = 0;
for( int i = 2; i<=n; i++)
{
sum += (long long int )(lsmall[i] * rmax[i]);
sum += (long long int )(((i-1)-lsmall[i]) * (n-i-rmax[i]));
}
cout<<sum<<endl;
}
}