#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e5+10,mod=1e9+7;
int c,t,n,m,ans=1ll;
int f[maxn],deg[maxn];
int po(int x,int y)
{
	int res=1ll,r=x;
	for(int i=y;i;i>>=1)
	{
		if(i&1) res=res*r%mod;
		r=r*r%mod;
	}
	return res;
}
signed main()
{
	freopen("traverse.in","r",stdin);
	freopen("traverse.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	f[0]=1ll;
	for(int i=1;i<=1e5;i++) f[i]=f[i-1]*i%mod;
	cin>>c>>t;
	while(t--)
	{
		ans=1ll;
		cin>>n>>m;
		for(int i=1;i<=n;i++) deg[i]=0;
		for(int i=1;i<n;i++)
		{
			int u,v;
			cin>>u>>v;
			deg[u]++,deg[v]++;
		}
		for(int i=1,x;i<=m;i++) cin>>x;
		for(int i=1;i<=n;i++)
			if(deg[i]>1) ans=ans*f[deg[i]]%mod*po(2,mod-2)%mod;
		cout<<ans<<endl;
	}
}
/*
7 1
5 2
1 2
1 3
2 4
2 5
1 3
*/
