#include #include #include #include #include #include #include #include #include #include #define scnaf scanf #define cahr char #define bug puts("bugbugbug"); using namespace std; typedef long long ll; const int mod=1000000007; const int maxn=1e5+5; const int inf=1e9; int T_T; mapmp; map ::iterator it; ll dp[maxn]; int a[maxn],b[maxn]; ll powmod(ll a,ll b) { ll ans=1; while(b) { if(b&1) ans=ans*a%mod; a=a*a%mod; b>>=1; } return ans; } int main() { scanf("%d",&T_T); while(T_T--) { mp.clear(); int n; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } dp[0]=0; for(int i=1;i<=n;i++) { ll k=powmod(2,i-1); if(mp[a[i]]) { dp[i]=(dp[i-1]+dp[i-1]+(k-mp[a[i]])*a[i]%mod+mod)%mod; } else dp[i]=(dp[i-1]*2%mod+k*a[i])%mod; mp[a[i]]=(mp[a[i]]+k)%mod; // printf("%d %d\n",i,dp[i]); } printf("%I64d\n",dp[n]); } return 0; }