#include<bits/stdc++.h>
#define int long long
using namespace std;
int sid,t,n,k,x,y,root,f[100005];
vector<int>v[100005];
const int mod=1e9+7;
void dfs(int x,int fa){
	int jc=1;
	bool flag=0;
	for(int i=0;i<v[x].size();i++){
		int y=v[x][i];
		if(y==fa)continue;
		dfs(y,x);
		jc=jc*(i+1)%mod;
		flag=1;
	}
	if(!flag)f[x]=1;
	for(int i=0;i<v[x].size();i++){
		int y=v[x][i];
		if(y==fa)continue;
		f[x]=(f[x]+jc*f[y]%mod)%mod;
	}
}
signed main(){
	cin>>sid>>t;
	while(t--){
		cin>>n>>k;
		for(int i=1;i<=n;i++)v[i].clear();
		for(int i=1;i<n;i++)cin>>x>>y,v[x].push_back(y),v[y].push_back(x);
		if(!k)continue;
		cin>>root;
		dfs(root,-1);
		cout<<f[root]<<endl;
	}
	return 0;
}
