#include <set>
#include <map>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <vector>
#include <cctype>
#include <cstring>
#include <sstream>
#include <fstream>
#include <cstdlib>
#include <cassert>
#include <iostream>
#include <algorithm>
 
using namespace std;
//Constant Declaration
/*--------------------------*/
//#define LL long long 
#define LL __int64
const int M=100001;
const int INF=1<<30;
const double EPS = 1e-11;
const double PI = acos(-1.0);
/*--------------------------*/
// some essential funtion
/*----------------------------------*/
void Swap(int &a,int &b){   int t=a;a=b;b=t; }
int Max(int a,int b){   return a>b?a:b;  }
int Min(int a,int b){   return a<b?a:b;  }
int Gcd(int a,int b){   while(b){b ^= a ^=b ^= a %= b;}  return a; }
/*----------------------------------*/
//for (i = 0; i < n; i++)
/*----------------------------------*/

LL c[M];
int a[M];
int left_lower[M], right_lower[M];//分别是,在第i个数左右边,比第i个数小的个数
int n = 100000;


int LowBit(int x)
{
    return x&(-x);
}

int Sum(int k)
{
    int sum = 0;
    while (k > 0)
    {
        sum += c[k];
        k -= LowBit(k);
    }
    return sum;
}

void Update(int k, int sc)
{
    while (k <= 100000)
    {
        c[k] += sc;
        k += LowBit(k);
    }
}


 
int main()
{
 //freopen("in.txt","r",stdin);
 //freopen("out.txt","w",stdout);
 int t, case1 = 0;
 scanf("%d", &t);
 int m;
 int i, j;
 int num;
 //scanf("%d%d", &n, &m);
 while (t--)
 {
    scanf("%d", &num);
    memset(c, 0, sizeof(c));
    memset(left_lower, 0, sizeof(left_lower));
    memset(right_lower, 0, sizeof(right_lower));
    for (i = 1; i <= num; i++)
    {
        scanf("%d", &a[i]);
        left_lower[i] += Sum(a[i] - 1);///Sum(a[i] - 1):插入该数前,区间1到a[i]-1的总个数
        Update(a[i], 1);
    }
    
    memset(c, 0, sizeof(c));
    for (i = num; i > 0; i--)//顺序插入
    {
        right_lower[i] += Sum(a[i] - 1);
        Update(a[i], 1);
    }

    LL ans = 0;
    
    for (i = 1; i <= num; i++)//逆序插入
    {
        ans += left_lower[i]*(num - i - right_lower[i]);//由于只能求比其小的个数,可以用i右边的总个数见减比他小的来求比他大的个数。
        ans += (i - 1 - left_lower[i])*right_lower[i];//
    }

    printf("%I64d\n", ans);
 }
 

 return 0;
}