#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; //#pragma comment(linker,"/STACK:102400000,102400000") int n; int s[100001]; int lowbit(int x){return x&(-x);} int query(int x) { int ret = 0; while(x) { ret += s[x]; x -= lowbit(x); } return ret; } void update(int pos, int val) { while(pos <= n) { s[pos] += val; pos += lowbit(pos); } } long long x[100001]; long long A[100001]; long long B[100001]; int MAIN() { int T; cin >> T; while(T--) { cin >> n; memset(s, 0, sizeof(s)); memset(A, 0, sizeof(A)); memset(B, 0, sizeof(B)); for(int i = 1; i <= n; i++) cin >> x[i]; for(int i = 1; i <= n; i++) { A[i] = query(x[i]); update(x[i], 1); } memset(s, 0, sizeof(s)); for(int i = n; i >= 1; i--) { B[i] = (n - i) - query(x[i]); update(x[i], 1); } long long ans = 0, s = 0; for(int i = 1; i <= n; i++) { ans += s * B[i]; s += A[i]; } cout << ans << endl; } return 0; } int main() { #ifdef LOCAL_TEST freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif ios :: sync_with_stdio(false); cout << fixed << setprecision(16); return MAIN(); }