#include<bits/stdc++.h>
using namespace std;
const long long M=2e5+10,MOD=1000000007;
typedef long long ll;
vector<int>edge[M];
int distant_count[M];
int vis[M];
int level[M];
void dfs(int x){
vis[x]=1;
for(int u:edge[x]){
if(!vis[u]){
level[u]=level[x]+1;
distant_count[level[u]]++;
dfs(u);
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t=1;
cin>>t;
while(t--){
int n,q;
cin>>n>>q;
for(int i=1;i<n;i++){
int u,v;
cin>>u>>v;
edge[u].push_back(v);
edge[v].push_back(u);
}
dfs(1);
distant_count[0]=1;
for(int i=1;i<=n;i++)distant_count[i]+=distant_count[i-1];
while(q--){
int x;
cin>>x;
cout<<distant_count[x]<<"\n";
}
for(int i=1;i<=n;i++)distant_count[i]=level[i]=vis[i]=0,edge[i].clear();
}
return 0;
}