#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int MAXN = 200000;
vector<long long> pow2;
struct Fenwick {
vector<int> bit;
int n;
Fenwick(int n) : n(n), bit(n+1, 0) {}
void update(int idx, int val) {
for (; idx <= n; idx += idx & -idx)
bit[idx] += val;
}
int query(int idx) {
int sum = 0;
for (; idx > 0; idx -= idx & -idx)
sum += bit[idx];
return sum;
}
};
void precompute_pow2() {
pow2.resize(MAXN + 5);
pow2[0] = 1;
for (int i = 1; i <= MAXN; i++) {
pow2[i] = (pow2[i-1] * 2) % MOD;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
precompute_pow2();
int T;
cin >> T;
while (T--) {
int N;
cin >> N;
vector<int> A(N);
for (int i = 0; i < N; i++) cin >> A[i];
vector<int> leftCount(N), rightCount(N);
// --- Left Count ---
Fenwick BITleft(N);
for (int i = 0; i < N; i++) {
int val = A[i];
leftCount[i] = BITleft.query(val - 1);
BITleft.update(val, 1);
}
// --- Right Count ---
Fenwick BITright(N);
for (int i = N - 1; i >= 0; i--) {
int val = A[i];
rightCount[i] = BITright.query(val - 1);
BITright.update(val, 1);
}
long long ans = 0;
for (int i = 1; i < N - 1; i++) {
long long L = leftCount[i];
long long R = rightCount[i];
if (L > 0 && R > 0) {
long long waysL = (pow2[L] - 1 + MOD) % MOD;
long long waysR = (pow2[R] - 1 + MOD) % MOD;
ans = (ans + (waysL * waysR) % MOD) % MOD;
}
}
cout << ans << "\n";
}
return 0;
}