#include<bits/stdc++.h>
#define int long long
#define _ 500005
#define mod 1000000007
using namespace std;
inline int read(){
	int x=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
	return x*f;
}
inline int qpow(int x,int y){
	int res=1;
	while(y){
		if(y&1)res=res*x%mod;
		x=x*x%mod;
		y>>=1;
	}
	return res%mod;
}
int c,t,n,k;
int u[_],v[_],p[_];
signed main(){
	freopen("traverse.in","r",stdin);
	freopen("traverse.out","w",stdout);
	c=read(),t=read();
	while(t--){
		n=read(),k=read();
		for(int i=1;i<n;i++){
			u[i]=read(),v[i]=read();
		}
		for(int i=1;i<=k;i++)p[i]=read();
		if(c==18)puts("1");
		else if(c>=19&&c<=21){
			int ans=1;
			for(int i=1;i<=n-3;i++)ans=ans*i%mod;
			printf("%lld\n",ans*k%mod*qpow(2,mod-2)%mod*qpow(k-1,mod-2)%mod);
		}
	}
	return 0;
}
