#include<bits/stdc++.h>
using namespace std;
struct op{
	int u,v;
}e[100010];
int vis[100010];
int ans=0;
int maxx=0;
int n,k;
void dfs(int op){
//	cout<<op<<endl;
	maxx=max(maxx,ans);
	int q=e[op].u;
	int p=e[op].v;
	for(int i=1;i<n;i++){
		if((e[i].u==p || e[i].u==q || e[i].v==p || e[i].v==q) && vis[i]==0){
			vis[i]=1;
			ans++;
			dfs(i);
			ans--;
			vis[i]=0;
		}
	}
}

int main(){
	freopen("traverse.in","r",stdin);
	freopen("traverse.out","w",stdout);

	int c,T;
	cin>>c>>T;
	while(T--){
		ans=0;
//		cin>>n>>k;
		scanf("%d%d",&n,&k);
		for(int i=1;i<n;i++){
			int u,v;
//			cin>>u>>v;
			scanf("%d%d",&u,&v);
			e[i].u=u;
			e[i].v=v;
		}
		for(int i=1;i<=k;i++){
			int op;
			cin>>op;
			vis[op]=1;
			dfs(op);
			vis[op]=0;
		}
//		cout<<maxx<<endl;
		printf("%d",maxx);
	}
	
	return 0;
}
/*
1 1
4 1
1 2
2 3
2 4
1
*/

