#include <bits/stdc++.h>
using namespace std;

const int MOD = 1e9 + 7;

long long pow_mod(long long base, long long exp) {
    long long result = 1;
    base %= MOD;
    while (exp > 0) {
        if (exp % 2 == 1) {
            result = (result * base) % MOD;
        }
        base = (base * base) % MOD;
        exp /= 2;
    }
    return result;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;
        vector<int> a(n);
        unordered_map<int, int> freq;
        for (int i = 0; i < n; ++i) {
            cin >> a[i];
            freq[a[i]]++;
        }
        
        int mex = 0;
        while (freq.count(mex)) {
            mex++;
        }
        
        sort(a.begin(), a.end());
        
        vector<long long> left_product(mex + 1);
        left_product[0] = 1;
        for (int y = 0; y < mex; ++y) {
            int cnt = freq[y];
            long long term = (pow_mod(2, cnt) - 1 + MOD) % MOD;
            left_product[y + 1] = (left_product[y] * term) % MOD;
        }
        
        long long sum = 0;
        for (int x = 1; x <= mex; ++x) {
            int sum_leq_x = upper_bound(a.begin(), a.end(), x) - a.begin();
            int sum_gt_x = n - sum_leq_x;
            long long right_pow = pow_mod(2, sum_gt_x);
            long long count_x = (left_product[x] * right_pow) % MOD;
            sum = (sum + x * count_x) % MOD;
        }
        
        cout << sum % MOD << '\n';
    }
    
    return 0;
}