#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e6+5;
const int mod=1e9+7;
int pre[maxn],d[maxn],n,k,T;
int c;
int qpow(int a,int b){
	int ans=1;
	while(b){
		if(b&1)(ans*=a)%=mod;
		(a*=a)%=mod;
		b>>=1;
	}
	return ans;
}
signed main(){
	freopen("traverse.in","r",stdin);
	freopen("traverse.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>c>>T;
	pre[0]=1;
	for(int i=1;i<=1e6;i++)pre[i]=pre[i-1]*i%mod;
	while(T--){
		cin>>n>>k;
		for(int i=1;i<=n;i++)d[i]=0;
		for(int i=1;i<n;i++){
			int u,v;
			cin>>u>>v;
			d[u]++,d[v]++;
		}
		int x;
		for(int i=1;i<=k;i++)cin>>x;
		if(c==18){
			cout<<1<<'\n';
			continue;
		}
		if(c>18&&c<=21){
			cout<<k*pre[n-2]%mod*qpow(2,mod-2)%mod<<'\n';
			continue;
		}
		for(int i=1;i<=n;i++)d[i]--;
		int ans=1;
		for(int i=1;i<=n;i++)ans=ans*pre[d[i]]%mod;
		cout<<ans<<'\n';
	}
}