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

#define ll long long

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int tt = 1;
    cin >> tt;

    while(tt--){
        ll n;
        cin >> n;

        vector<vector<ll>> v(n);
        for(ll i = 1; i < n; i++){
            ll x, y;
            cin >> x >> y;
            x--;
            y--;
            v[x].push_back(y);
            v[y].push_back(x);
        }

        ll answer = 0;
        vector<ll> ss(n, 1);
        ll md = 1e9 + 7;

        auto modpow = [&](ll a, ll b) {
            a %= md;
            ll res = 1;
            while (b > 0) {
                if (b & 1) res = (res * a) % md;
                a = (a * a) % md;
                b >>= 1;
            }
            return res;
        };

        auto modDivide = [&](ll G, ll m) {
            return (G % md) * modpow(m, md - 2) % md;
        };

        auto solve = [&](const vector<ll>& c) {
            ll s1 = 0, s2 = 0, s3 = 0;
            ll d = c.size();
            for(ll i = 0; i < d; i++){
                s1 = (s1 + c[i]) % md;
                s2 = (s2 + c[i] * c[i]) % md;
                s3 = (s3 + c[i] * c[i] * c[i]) % md;
            }
            
            ll G = (s1 * s1 % md * s1) % md;
            G = (G - (3 * s1 % md * s2) % md + md) % md;
            G = (G + (2 * s3) % md) % md;
            G = modDivide(G, 6);
            return G;
        };

        function<void(ll, ll)> dfs = [&](ll u, ll par){
            vector<ll> val;
            for(auto& z : v[u]) {
                if(z != par){
                    dfs(z, u);
                    val.push_back(ss[z]);
                    ss[u] += ss[z];
                }
            }
            
            val.push_back(n - ss[u]);
            answer = (answer + solve(val)) % md;
        };

        dfs(0, -1);

        cout << answer << '\n';
    }

    return 0;
}