#include <bits/stdc++.h>
using namespace std;
vector<int> g[1000 + 1];
bool seen[1000 + 1];
set<int> a, b;
int dfs(int u) {
  int ans, v, i;
  if (a.count(u)) {
    return u;
  }
  seen[u] = true;
  ans = 0;
  for (i = 0; i < (int)g[u].size(); i++) {
    v = g[u][i];
    if (!seen[v]) {
      ans = dfs(v);
      if (ans != 0) {
        return ans;
      }
    }
  }
  return ans;
}
int main() {
  int t, n, k, u, v, i;
  scanf("%d", &t);
  while (t--) {
    scanf("%d", &n);
    for (i = 1; i <= n - 1; i++) {
      scanf("%d%d", &u, &v);
      g[u].push_back(v);
      g[v].push_back(u);
    }
    scanf("%d", &k);
    for (i = 1; i <= k; i++) {
      scanf("%d", &u);
      a.insert(u);
    }
    scanf("%d", &k);
    for (i = 1; i <= k; i++) {
      scanf("%d", &u);
      b.insert(u);
    }
    printf("B %d\n", *b.begin());
    fflush(stdout);
    scanf("%d", &u);
    if (a.count(u)) {
      printf("C %d\n", u);
      fflush(stdout);
    } else {
      u = dfs(u);
      printf("A %d\n", u);
      fflush(stdout);
      scanf("%d", &v);
      if (b.count(v)) {
        printf("C %d\n", u);
        fflush(stdout);
      } else {
        printf("C -1\n");
        fflush(stdout);
      }
    }
    for (u = 1; u <= n; u++) {
      g[u].clear();
    }
    memset(seen, false, sizeof(seen));
    a.clear();
    b.clear();
  }
  return 0;
}
