#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define M 100005
#define mod 1000000007

int c,T;
int n,q;
int head[M],tot;
struct edge{
	int nxt,to;
}e[M<<1];

ll fac[M];

void add(int u,int v){
	e[++tot]=(edge){head[u],v};
	head[u]=tot;
}

void init(){
	for(int i=1;i<=n;++i) head[i]=0;
	tot=0;
}

void work(){
	init();
	scanf("%d %d",&n,&q);
	for(int i=1,u,v;i<n;++i) scanf("%d %d",&u,&v),add(u,v),add(v,u);
	ll res=0;
	for(int i=1;i<=q;++i){
		int u;
		scanf("%d",&u);
		if(19<=c && c<=21){
			res=(res+fac[n-2]-fac[n-3]*(i-1)%mod+mod)%mod;
		}
		if(c==18){
			res=1;
		}
	}
	printf("%lld\n",res);
}

int main(){
	freopen("traverse.in","r",stdin);
	freopen("traverse.out","w",stdout);
	fac[0]=1;
	for(int i=1;i<M;++i) fac[i]=fac[i-1]*i%mod;
	scanf("%d %d",&c,&T);
	while(T--) work();
	return 0;
}

/*
我累了。
最后5分钟，暴力应该打不完
作为oi生涯的最后一场比赛，个人认为还是打的不差的，至少比csp高（应该吧）
这就是结局吗 
回去当whk选手了。。。 
*/
