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

typedef long long ll;
const int mod=1e9+7;
const ll mod2=500000004429085785;
int c,T;
int n,k;
int hd[100010],to[200010],nt[200010],fm[200010],tot;
int e[100010];

void add(int u,int v){
	tot++;
	fm[tot]=u;
	to[tot]=v;
	nt[tot]=hd[u];
	hd[u]=tot;
}

int getint(int &x){
	x=0;
	char s=getchar();
	while(s<'0'||s>'9') s=getchar();
	while('0'<=s&&s<='9'){
		x=x*10+s-'0';
		s=getchar();
	}
}

int main(){
	freopen("traverse.in","r",stdin);
	freopen("traverse.out","w",stdout);
	
	getint(c);
	getint(T);
	while(T--){
		getint(n);
		getint(k);
		tot=0;
		for(int i=1;i<=n;i++) hd[i]=0;
		for(int i=1;i<n;i++){
			int u,v;
			getint(u);
			getint(v);
			add(u,v);
			add(v,u);
		}
		for(int i=1;i<=k;i++) getint(e[i]),e[i]=e[i]*2;
		ll ans=0;
		ll v=1;
		for(int i=1;i<=n-2;i++) v=v*i%mod;
		if(19<=c&&c<=21) ans=v*k%mod*mod2%mod;
		else if(c==18) ans=k>0;
		printf("%lld\n",ans);
	}
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
}
