#include <bits/stdc++.h>
#define ll long long int
using namespace std;


bool is_tourist[100005];
int f_subtree[100005];
int f_sum[100005];
int f_max[100005][2];
int n, k;

void dfs1(int node, vector<vector<int>> &adj, int pa, int dist)
{
    for (auto child : adj[node])
    {
        if (child == pa)
            continue;
        dfs1(child, adj, node, dist + 1);
        f_subtree[node] += f_subtree[child];
        if (f_subtree[child] > 0)
        {
            f_max[node][0] = max(f_max[node][0], f_max[child][0] + 1);
        }
    }
    if (is_tourist[node])
        ++f_subtree[node], f_sum[1] += dist;
}

void dfs2(int node, vector<vector<int>> &adj, int pa)
{
    set<int> max_dis;
    for (auto child : adj[node])
    {
        if (child == pa)
            continue;
        max_dis.insert(f_max[child][0]);
    }
    for (auto child : adj[node])
    {
        if (child == pa)
            continue;
        int curr = f_max[child][0];
        max_dis.erase(curr);
        int val = 0;
        if (!max_dis.empty())
            val = (*max_dis.rbegin()) + 2;
        val = max(val, f_max[node][1] + 1);
        f_max[child][1] = val;
        f_sum[child] = f_sum[node] + (k - f_subtree[child]) - f_subtree[child];
        dfs2(child, adj, node);
        max_dis.insert(curr);
    }
}


void mainSolve()
{
    cin >> n >> k;
    memset(is_tourist, false, sizeof(is_tourist));
    memset(f_subtree, false, sizeof(f_subtree));
    memset(f_max, 0, sizeof(f_max));
    memset(f_sum, 0, sizeof(f_sum));
    vector<vector<int>> adj(n + 1);
    for (int i = 0; i < k; i++)
    {
        int x;
        cin >> x;
        is_tourist[x] = true;
    }

    for (int i = 0; i < n - 1; i++)
    {
        int u, v;
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    dfs1(1, adj, 0, 0);
    dfs2(1, adj, 0);
    int ans = 1;
    int dis = 1e7;
    for (int i = 1; i <= n; i++)
    {
        int curr = f_sum[i] - max(f_max[i][0], f_max[i][1]);
        if (dis >= curr)
            dis = curr, ans = i;
    }
    cout << ans << endl;
}

int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        mainSolve();
    }
    return 0;
}