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

using ll = long long;

const int maxn=1e5+10, mod=1e9+7;
ll siz2[maxn], fac[maxn],siz[maxn], ifac[maxn], dep[maxn], fa[maxn], bel[maxn], q[maxn];

vector<int> g[maxn];

void dfs(int u,int f) {
	fa[u] = f, dep[u]=dep[f]+1;
	for(int v:g[u]) {
		if(v!=f) dfs(v,u);
	}
}

ll qpow(ll a, ll p) {
    ll ret =1;
    while(p>0) {
        if(p&1) ret = ret*a%mod;
        a=a*a%mod;
        p>>=1;
    }
    return ret;
}

pair<int,int> e[maxn];

int main() {
	int _,T;
	cin>>_>>T;
	fac[0]=1;
	for(int i=1;i<=1e5;i++) fac[i]=fac[i-1]*i%mod;
	ifac[100000] = qpow(fac[100000], mod-2);
	int i2=qpow(2,mod-2);
	for(int i=99999;i>=0;i--) ifac[i]=ifac[i+1]*(i+1)%mod;
	while(T--) {
		memset(siz,0,sizeof siz);
		memset(siz2,0,sizeof siz2);
		int n,k;
		cin>>n>>k;
		for(int i=1;i<=n-1;i++) {
			int u,v;
			cin>>u>>v;
			e[i].first = u, e[i].second =v;
			g[u].push_back(v), g[v].push_back(u);
		}
		for(int i=1;i<=k;i++) cin>>q[i];
		
		dfs(1,1);
		
		for(int i=1;i<=n-1;i++) bel[i]=dep[e[i].first]<dep[e[i].second]?e[i].first:e[i].second;
		
		for(int i=1;i<=n-1;i++) siz[bel[i]]++;
		
		ll ans=1;
		ll ret =1;
		for(int i=1;i<=n;i++) {
		 	if(siz[i]<2) continue;
		 	ans=ans*fac[siz[i]]%mod*i2%mod;
		}
		
		for(int i=1;i<=n;i++) siz2[i]=siz[i];
		
		for(int i=1;i<=k;i++) siz2[bel[i]]--;
		
		for(int i=1;i<=n;i++) {
			if(siz2[i]<2) ret*=0;
			ret=ret*(fac[siz[i]]*i2%mod-siz2[i]%mod*(siz2[i]-1)%mod*fac[siz[i]-2]*2%mod);
		}
		
		cout<<((ans-ret)%mod+mod)%mod<<endl;
		
//		if(k<=8) {
//			int d = (1<<k)-1;
//			for(int i=1;i<=k;i++) siz[bel[i]]--;
//			for(int s=1;s<=d;s++) {
//				int tmp = 1;
//				
//				for(int i=1;i<=n;i++) {
//					if(siz[i]<2) continue;
//					tmp=tmp*fac[siz[i]]%mod*fac[siz[i]-2]%mod*i2%mod;
//				}
//				for(int i=1;i<=k;i++) tmp=tmp*(((s>>(i-1))&1)?
//					2:
//					siz[bel[i]]-2
//				)%mod;
//				ans+=(tmp+mod)%mod;
//			}
//			cout<<ans%mod<<endl;
//		}

	}
}
