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

const int N=1e5+5,modd=1e9+7;
int id,n,k;
int h[N],cnt;
int pkd[N];

struct Edge{
	int u,v,tim;
}e[N<<1];

void add(int u,int v,int tim){
	e[++cnt].v=v;
	e[cnt].tim=tim;
	e[cnt].u=h[u];
	h[u]=cnt;
}

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

signed main(){
	freopen("traverse.in","r",stdin);
	freopen("traverse.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	int T;
	cin>>id>>T;
	
	for(;T;T--){
		cin>>n>>k;
		init();
		for(int i=1,u,v;i<n;i++){
			cin>>u>>v;
			add(u,v,i);
			add(v,u,i);
		}
		for(int i=1;i<=k;i++){
			cin>>pkd[i];
		}
		if(id==18)cout<<1<<'\n';
		else if(id>=19&&id<=21){
			int res=1,p1=1,p2=1;
			for(int i=1;i<=n;i++)res=res*i%modd;
//			for(int i=1;i<=k;i++)p1=p1*i%modd;
//			for(int i=1;i<=n-k;i++)p2=p2*i%modd;
			cout<<(res*k%modd)<<'\n';
		}
	}
	
	return 0;
} 
