#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;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwoKaW50IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKCiAgICBpbnQgdHQgPSAxOwogICAgY2luID4+IHR0OwoKICAgIHdoaWxlKHR0LS0pewogICAgICAgIGxsIG47CiAgICAgICAgY2luID4+IG47CgogICAgICAgIHZlY3Rvcjx2ZWN0b3I8bGw+PiB2KG4pOwogICAgICAgIGZvcihsbCBpID0gMTsgaSA8IG47IGkrKyl7CiAgICAgICAgICAgIGxsIHgsIHk7CiAgICAgICAgICAgIGNpbiA+PiB4ID4+IHk7CiAgICAgICAgICAgIHgtLTsKICAgICAgICAgICAgeS0tOwogICAgICAgICAgICB2W3hdLnB1c2hfYmFjayh5KTsKICAgICAgICAgICAgdlt5XS5wdXNoX2JhY2soeCk7CiAgICAgICAgfQoKICAgICAgICBsbCBhbnN3ZXIgPSAwOwogICAgICAgIHZlY3RvcjxsbD4gc3MobiwgMSk7CiAgICAgICAgbGwgbWQgPSAxZTkgKyA3OwoKICAgICAgICBhdXRvIG1vZHBvdyA9IFsmXShsbCBhLCBsbCBiKSB7CiAgICAgICAgICAgIGEgJT0gbWQ7CiAgICAgICAgICAgIGxsIHJlcyA9IDE7CiAgICAgICAgICAgIHdoaWxlIChiID4gMCkgewogICAgICAgICAgICAgICAgaWYgKGIgJiAxKSByZXMgPSAocmVzICogYSkgJSBtZDsKICAgICAgICAgICAgICAgIGEgPSAoYSAqIGEpICUgbWQ7CiAgICAgICAgICAgICAgICBiID4+PSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgfTsKCiAgICAgICAgYXV0byBtb2REaXZpZGUgPSBbJl0obGwgRywgbGwgbSkgewogICAgICAgICAgICByZXR1cm4gKEcgJSBtZCkgKiBtb2Rwb3cobSwgbWQgLSAyKSAlIG1kOwogICAgICAgIH07CgogICAgICAgIGF1dG8gc29sdmUgPSBbJl0oY29uc3QgdmVjdG9yPGxsPiYgYykgewogICAgICAgICAgICBsbCBzMSA9IDAsIHMyID0gMCwgczMgPSAwOwogICAgICAgICAgICBsbCBkID0gYy5zaXplKCk7CiAgICAgICAgICAgIGZvcihsbCBpID0gMDsgaSA8IGQ7IGkrKyl7CiAgICAgICAgICAgICAgICBzMSA9IChzMSArIGNbaV0pICUgbWQ7CiAgICAgICAgICAgICAgICBzMiA9IChzMiArIGNbaV0gKiBjW2ldKSAlIG1kOwogICAgICAgICAgICAgICAgczMgPSAoczMgKyBjW2ldICogY1tpXSAqIGNbaV0pICUgbWQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGxsIEcgPSAoczEgKiBzMSAlIG1kICogczEpICUgbWQ7CiAgICAgICAgICAgIEcgPSAoRyAtICgzICogczEgJSBtZCAqIHMyKSAlIG1kICsgbWQpICUgbWQ7CiAgICAgICAgICAgIEcgPSAoRyArICgyICogczMpICUgbWQpICUgbWQ7CiAgICAgICAgICAgIEcgPSBtb2REaXZpZGUoRywgNik7CiAgICAgICAgICAgIHJldHVybiBHOwogICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uPHZvaWQobGwsIGxsKT4gZGZzID0gWyZdKGxsIHUsIGxsIHBhcil7CiAgICAgICAgICAgIHZlY3RvcjxsbD4gdmFsOwogICAgICAgICAgICBmb3IoYXV0byYgeiA6IHZbdV0pIHsKICAgICAgICAgICAgICAgIGlmKHogIT0gcGFyKXsKICAgICAgICAgICAgICAgICAgICBkZnMoeiwgdSk7CiAgICAgICAgICAgICAgICAgICAgdmFsLnB1c2hfYmFjayhzc1t6XSk7CiAgICAgICAgICAgICAgICAgICAgc3NbdV0gKz0gc3Nbel07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHZhbC5wdXNoX2JhY2sobiAtIHNzW3VdKTsKICAgICAgICAgICAgYW5zd2VyID0gKGFuc3dlciArIHNvbHZlKHZhbCkpICUgbWQ7CiAgICAgICAgfTsKCiAgICAgICAgZGZzKDAsIC0xKTsKCiAgICAgICAgY291dCA8PCBhbnN3ZXIgPDwgJ1xuJzsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==