#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> v[10010];
vector<int> v1(100000);
vector<int> v3(100000);
int ans = -1;
void dfs(int x, int pr) {
  if (v1[x] > 0) ans = x;
  if (ans != -1) return;
  for (int i = 0; i < v[x].size(); i++)
    if (v[x][i] != pr) dfs(v[x][i], x);
}
int main() {
  ios_base::sync_with_stdio(0);
  int t;
  cin >> t;
  for (int q = 0; q < t; q++) {
    ans = -1;
    cin >> n;
    for (int i = 1; i <= n; i++) v[i].clear();
    for (int i = 1; i < n; i++) {
      int x, y;
      cin >> x >> y;
      v[x].push_back(y);
      v[y].push_back(x);
    }
    vector<int> v2;
    v1.assign(n + 1, 0);
    v3.assign(n + 1, 0);
    int k;
    cin >> k;
    for (int i = 0; i < k; i++) {
      int lul;
      cin >> lul;
      v1[lul]++;
    }
    cin >> k;
    for (int i = 0; i < k; i++) {
      int lul;
      cin >> lul;
      v2.push_back(lul);
      v3[lul]++;
    }
    int l;
    cout << "B " << v2[0] << endl;
    fflush(stdout);
    cin >> l;
    if (v1[l] > 0) {
      cout << "C " << l << endl;
      fflush(stdout);
    } else {
      dfs(l, -1);
      int color;
      cout << "A " << ans << endl;
      fflush(stdout);
      cin >> color;
      if (v3[color] == 1) {
        cout << "C " << ans << endl;
        fflush(stdout);
      } else {
        cout << "C " << -1 << endl;
        fflush(stdout);
      }
    }
  }
  return 0;
}
