/*
* Copyright (c) 2025 Emon Thakur
* All rights reserved.
*/
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const int N = 2e5;
const ll mod = 1e9+7;
int a[N+2],sg1[N*4+10],sg2[N*4+10];
void build(int node,int start,int end)
{
sg1[node] = 0;
sg2[node] = 0;
if(start == end) return;
int mid = (start+end)>>1;
build(node*2,start,mid);
build(node*2+1,mid+1,end);
}
void update1(int node,int start,int end,int ind,int val)
{
if(start==end)
{
sg1[node] += val;
return;
}
int mid = (start+end)>>1;
if(ind<=mid) update1(node*2,start,mid,ind,val);
else update1(node*2+1,mid+1,end,ind,val);
sg1[node] = sg1[node*2] + sg1[node*2+1];
}
void update2(int node,int start,int end,int ind,int val)
{
if(start==end)
{
sg2[node] += val;
return;
}
int mid = (start+end)>>1;
if(ind<=mid) update2(node*2,start,mid,ind,val);
else update2(node*2+1,mid+1,end,ind,val);
sg2[node] = sg2[node*2] + sg2[node*2+1];
}
int query1(int node,int start,int end,int l,int r)
{
if(l>end || r<start) return 0;
if(l<=start && r>=end) return sg1[node];
int mid = (start+end)>>1;
return query1(node*2,start,mid,l,r) + query1(node*2+1,mid+1,end,l,r);
}
int query2(int node,int start,int end,int l,int r)
{
if(l>end || r<start) return 0;
if(l<=start && r>=end) return sg2[node];
int mid = (start+end)>>1;
return query2(node*2,start,mid,l,r) + query2(node*2+1,mid+1,end,l,r);
}
ll Pow(ll a, ll b)
{
ll ans = 1;
while (b)
{
if (b & 1) ans = (ans * a) % mod;
a = (a * a) % mod;
b >>= 1;
}
ans += mod;
ans %= mod;
return ans;
}
void solve(int tc)
{
// string outp = "output"+to_string(tc)+".txt";
// string inp = "input"+to_string(tc)+".txt";
// ofstream file(outp);
// freopen(inp.c_str(),"r",stdin);
int t; cin >> t; while(t--){
int n; cin >> n;
build(1,1,n);
for(int i=0;i<n;++i)
{
cin >> a[i];
update2(1,1,n,a[i],1);
}
ll ans = 0;
for(int i=0;i<n;i++)
{
update2(1,1,n,a[i],-1);
if(a[i]>1) ans += ( (Pow(2,query1(1,1,n,1,a[i]-1))-1) * (Pow(2,query2(1,1,n,1,a[i]-1))-1)) % mod;
ans %= mod;
update1(1,1,n,a[i],1);
}
ans = (ans + mod) % mod;
cout<<ans<<'\n';}
}
int main()
{
ios::sync_with_stdio(false); cin.tie(nullptr);
//for(int i=0;i<100;i++) solve(i);
solve(0);
}