#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
const ll M = 1000000007;
#define pb push_back
#define forn(i,k,n) for(int i = k; i < n; ++i)
#define nfor(i,n,k) for(int i = n; i >= k; --i)
#define all(arr) arr.begin(), arr.end()
#define endl '\n'
#define N 100015
ll n;
vector<ll> G[N];
multiset<ll,greater<ll>> s;
vector<ll> C(N);
// dfs function to calculate no of nodes in subtree of u..
// and then inserting the contribution of each edge in the set s
ll dfs(ll u, ll p){
C[u] = 0;
ll tmp = 0;
for(auto x: G[u]){
if(x == p) continue;
C[x] += dfs(x,u) + 1;
C[x] %= M;
tmp += C[x];
tmp %= M;
s.insert(((C[x] % M) * (n - C[x]) % M) % M); // contribution is (subtree nodes * (total nodes - subtree nodes))...
}
return tmp % M;
}
void solve(){
// input and clearing of Data structures
s.clear();
cin >> n;
forn(i,1,n + 1) G[i].clear();
C.clear();
forn(i,1,n){
ll u, v; cin >> u >> v;
G[u].pb(v);
G[v].pb(u);
}
dfs(1,0); // dfs to calculate contribution
ll m; cin >> m;
multiset<ll,greater<ll>> fac; // multiset for factors of k
forn(i,0,m){
ll xx; cin >> xx;
fac.insert(xx);
}
while(fac.size() < n - 1) fac.insert(1); // inserting 1 for each left nodes if (m < n - 1)
ll ans = 0;
while(fac.size() > n - 1){ // multiplying greatest factors of k till the size of m is n - 1; if(m > n - 1)
ll tmp = *fac.begin();
fac.erase(fac.begin());
ll tmp2 = *fac.begin();
fac.erase(fac.begin());
fac.insert(((tmp % M) * (tmp2 % M)) % M);
}
auto it = fac.begin();
// calculating total answer by multiplying contribution of each edge by factors of k (we multiply highest contribution by highest factor))...
for(auto x : s){
ans += ((x % M) * ((*it) % M)) % M;
ans %= M;
it++;
}
cout << ans % M << endl;
}
signed main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t; cin >> t;
while(t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZyAKI2RlZmluZSBsbCBsb25nIGxvbmcKY29uc3QgbGwgTSA9IDEwMDAwMDAwMDc7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZm9ybihpLGssbikgZm9yKGludCBpID0gazsgaSA8IG47ICsraSkKI2RlZmluZSBuZm9yKGksbixrKSBmb3IoaW50IGkgPSBuOyBpID49IGs7IC0taSkKI2RlZmluZSBhbGwoYXJyKSBhcnIuYmVnaW4oKSwgYXJyLmVuZCgpCiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgTiAxMDAwMTUKbGwgbjsKdmVjdG9yPGxsPiBHW05dOwptdWx0aXNldDxsbCxncmVhdGVyPGxsPj4gczsKdmVjdG9yPGxsPiBDKE4pOwovLyBkZnMgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIG5vIG9mIG5vZGVzIGluIHN1YnRyZWUgb2YgdS4uCi8vIGFuZCB0aGVuIGluc2VydGluZyB0aGUgY29udHJpYnV0aW9uIG9mIGVhY2ggZWRnZSBpbiB0aGUgc2V0IHMKbGwgZGZzKGxsIHUsIGxsIHApewoJQ1t1XSA9IDA7CglsbCB0bXAgPSAwOwoJZm9yKGF1dG8geDogR1t1XSl7CgkJaWYoeCA9PSBwKSBjb250aW51ZTsKCQlDW3hdICs9IGRmcyh4LHUpICsgMTsKCQlDW3hdICU9IE07CgkJdG1wICs9IENbeF07CgkJdG1wICU9IE07CgkJcy5pbnNlcnQoKChDW3hdICUgTSkgKiAobiAtIENbeF0pICUgTSkgJSBNKTsgLy8gY29udHJpYnV0aW9uIGlzIChzdWJ0cmVlIG5vZGVzICogKHRvdGFsIG5vZGVzIC0gc3VidHJlZSBub2RlcykpLi4uCgl9CglyZXR1cm4gdG1wICUgTTsKfQp2b2lkIHNvbHZlKCl7CgkvLyBpbnB1dCBhbmQgY2xlYXJpbmcgb2YgRGF0YSBzdHJ1Y3R1cmVzCglzLmNsZWFyKCk7CgljaW4gPj4gbjsKCWZvcm4oaSwxLG4gKyAxKSBHW2ldLmNsZWFyKCk7CglDLmNsZWFyKCk7Cglmb3JuKGksMSxuKXsKCQlsbCB1LCB2OyBjaW4gPj4gdSA+PiB2OwoJCUdbdV0ucGIodik7CgkJR1t2XS5wYih1KTsKCX0KCWRmcygxLDApOyAvLyBkZnMgdG8gY2FsY3VsYXRlIGNvbnRyaWJ1dGlvbgoJbGwgbTsgY2luID4+IG07CgltdWx0aXNldDxsbCxncmVhdGVyPGxsPj4gZmFjOyAvLyBtdWx0aXNldCBmb3IgZmFjdG9ycyBvZiBrCglmb3JuKGksMCxtKXsKCQlsbCB4eDsgY2luID4+IHh4OwoJCWZhYy5pbnNlcnQoeHgpOwoJfQoJd2hpbGUoZmFjLnNpemUoKSA8IG4gLSAxKSBmYWMuaW5zZXJ0KDEpOyAvLyBpbnNlcnRpbmcgMSBmb3IgZWFjaCBsZWZ0IG5vZGVzIGlmIChtIDwgbiAtIDEpCglsbCBhbnMgPSAwOwoJd2hpbGUoZmFjLnNpemUoKSA+IG4gLSAxKXsgICAgIC8vIG11bHRpcGx5aW5nIGdyZWF0ZXN0IGZhY3RvcnMgb2YgayB0aWxsIHRoZSBzaXplIG9mIG0gaXMgbiAtIDE7IGlmKG0gPiBuIC0gMSkKCQlsbCB0bXAgPSAqZmFjLmJlZ2luKCk7CgkJZmFjLmVyYXNlKGZhYy5iZWdpbigpKTsKCQlsbCB0bXAyID0gKmZhYy5iZWdpbigpOwoJCWZhYy5lcmFzZShmYWMuYmVnaW4oKSk7CgkJZmFjLmluc2VydCgoKHRtcCAlIE0pICogKHRtcDIgJSBNKSkgJSBNKTsKCX0KCWF1dG8gaXQgPSBmYWMuYmVnaW4oKTsKCS8vIGNhbGN1bGF0aW5nIHRvdGFsIGFuc3dlciBieSBtdWx0aXBseWluZyBjb250cmlidXRpb24gb2YgZWFjaCBlZGdlIGJ5IGZhY3RvcnMgb2YgayAod2UgbXVsdGlwbHkgaGlnaGVzdCBjb250cmlidXRpb24gYnkgaGlnaGVzdCBmYWN0b3IpKS4uLgoJZm9yKGF1dG8geCA6IHMpewoJCWFucyArPSAoKHggJSBNKSAqICgoKml0KSAlIE0pKSAlIE07CgkJYW5zICU9IE07CgkJaXQrKzsKCX0KCWNvdXQgPDwgYW5zICUgTSA8PCBlbmRsOwp9CnNpZ25lZCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CglpbnQgdDsgY2luID4+IHQ7Cgl3aGlsZSh0LS0pIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQ==