#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7,N=1000010;
struct edge{
	int to,nxt; 
}e[N];
int len,head[N],f[N];
int n,K,k[N],c,T,u,v;
void add(int u,int v){
	e[++len].nxt=head[u];
	e[len].to=v;
	head[u]=len;
}
int main(){
	freopen("traverse.in","r",stdin);
	freopen("traverse.out","w",stdout);
	cin>>c>>T;
	while(T--){
		cin>>n>>K;
		for(int i=1;i<n;++i){
			cin>>u>>v;
			add(u,v);
			add(v,u);
		} 
		for(int i=1;i<=K;++i){
			cin>>k[i];
		}
		f[1]=f[2]=1;
		for(int i=3;i<n;++i){
			f[i]=f[i-1]+f[i-2];
		}
		cout<<f[n-1]%mod<<"\n";
	}
}
