/*
* Copyright (c) 2024 Emon Thakur
* All rights reserved.
*/
#include<bits/stdc++.h>
using namespace std;
void dfs(int node, int parent,int t,vector<vector<int>> &graph,vector<int> &ti)
{
ti[t] += 1;
for(auto e:graph[node])
{
if(e==parent) continue;
dfs(e,node,t+1,graph,ti);
}
}
void solve()
{
int n,q; cin>>n>>q;
int u,v;
vector<vector<int>> graph(n+1);
vector<int>ti(n+1);
for(int i=0;i<n-1;i++)
{
cin>>u>>v;
graph[u].push_back(v);
graph[v].push_back(u);
}
dfs(1,0,0,graph,ti);
for(int i=1;i<=n;i++) ti[i]+=ti[i-1];
int x;
while(q--)
{
cin>>x;
cout<<ti[x]<<endl;
}
}
int main()
{
ios::sync_with_stdio(false); cin.tie(nullptr);
int t; cin>>t; while(t--) solve();
}