#include using namespace std; const int _ = 1e5 + 10; const int __ = 2e5 + 10; const int mod = 1000000007; const int inv2 = 500000004; int fact[_], inv[_]; inline void init(int n) { fact[0] = 1; for (int i = 1; i <= n; i++) { fact[i] = (long long) fact[i-1] * i % mod; } inv[1] = 1; for (int i = 2; i <= n; i++) { inv[i] = mod - (long long) (mod / i) * inv[mod % i] % mod; } } int Subtaskid, Testcases; int n, k, u[_], v[_], deg[_]; bool cut[_]; int e, hd[_], nx[__], to[__], spec[_]; bool vis[_]; inline void add(int u, int v) { e++; nx[e] = hd[u]; to[e] = v; hd[u] = e; } int dp[_]; int dfs(int x) { vis[x] = true; int val = inv[deg[x] - 1]; dp[x] = spec[x]; int ans = 0; int sum = 0; int sqrsum = 0; for (int i = hd[x]; i; i = nx[i]) { int y = to[i]; if (!vis[y]) { ans = (ans + dfs(y)) % mod; dp[x] = (dp[x] + dp[y]) % mod; sum = (sum + dp[y]) % mod; sqrsum = (sqrsum + (long long) dp[y] * dp[y]) % mod; } } dp[x] = (long long) dp[x] * val % mod; ans = (ans + (((long long) spec[x] * (spec[x] - 1)) >> 1LL) % mod * val) % mod; ans = (ans + (long long) sum * spec[x] % mod * val) % mod; ans = (ans + ((long long) sum * sum % mod + mod - sqrsum) % mod * inv2 % mod * val) % mod; return ans; } int main() { freopen("traverse.in", "r", stdin); freopen("traverse.out", "w", stdout); ios::sync_with_stdio(0); cin.tie(0); init(100000); cin >> Subtaskid >> Testcases; while (Testcases--) { cin >> n >> k; for (int i = 1; i < n; i++) { cin >> u[i] >> v[i]; deg[u[i]]++; deg[v[i]]++; } for (int i = 1; i <= k; i++) { int x; cin >> x; cut[x] = true; } int ans = k; for (int i = 1; i < n; i++) { if (!cut[i]) { add(u[i], v[i]); add(v[i], u[i]); } else { spec[u[i]]++; spec[v[i]]++; } } for (int i = 1; i <= n; i++) { if (!vis[i]) { ans = (ans + mod - dfs(i)) % mod; } } for (int i = 1; i <= n; i++) { ans = (long long) ans * fact[deg[i] - 1] % mod; } cout << ans; if (Testcases) { cout << '\n'; e = 0; for (int i = 1; i <= n; i++) { hd[i] = deg[i] = spec[i] = 0; vis[i] = false; } for (int i = 1; i < n; i++) { cut[i] = false; } } } cout << endl; return 0; }