#include<bits/stdc++.h>
using namespace std;
//#include <ext/pb_ds/assoc_container.hpp> // Common file
//#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
//using namespace __gnu_pbds; // order of key(keys strictly less than) // find_by_order
//typedef tree<long long,null_type,less<>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
//typedef tree<long long, null_type, less_equal<>, rb_tree_tag, tree_order_statistics_node_update> indexed_multiset;
//IF WA CHECK FOR : -
// 1 > EDGE CASES LIKE N=1 , N=0
// 2 > SIGNED INTEGER OVERFLOW IN MOD
// 3 > CHECK THE CODE FOR LOGICAL ERRORS AND SEG FAULTS
// 4 > READ THE PS ONCE AGAIN , if having double diff less than 1e-8 is same.
// 5 > You Have got AC .
#define ll long long
#define inf (long long)(2e18)
#define ff first
#define ss second
#define f(i,a,b) for(ll i=a;(i)<long(b);(i)++)
#define fr(i,a,b) for(ll i=a;(i)>=(long long)(b);(i)--)
#define it(b) for(auto &it:(b))
#define NUM 998244353
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
typedef vector<ll> vll;
typedef pair<ll,ll> pll;
long long binpow(long long a, long long b) {
if (b == 0)
return 1;
long long res = binpow(a, b / 2)%NUM;
if (b % 2)
return (((res * res)%NUM)* a)%NUM;
else
return (res * res)%NUM;
}
void read(vll &arr,ll n) {
if (arr.size() != n) { arr.assign(n, 0); }for (int i = 0; i < n; i++)cin >> arr[i];
}
inline ll min(ll a,ll b)
{
if(a>b)return b;return a;
}
inline ll max(ll a, ll b)
{
if(a>b)return a;return b;
}
inline ll dif(ll a,ll b)
{
if(a>b)return a-b;return b-a;
}
long long gcd(long long a,long long b)
{
if(b==0)return a;return gcd(b,a%b);
}
long long lcm(long long a,long long b)
{
long long k=gcd(a,b);return (a*b)/k;
}
vector<ll> in;
vector<ll> out;
vector<vll> adj;
vector<ll> lev;
int tim = 1;
void dfs(int start, int par, ll level = 1)
{
in[start] = tim++;
lev[start] = level;
it(adj[start])
{
if (it != par)
dfs(it, start, level + 1);
}
out[start] = tim++;
}
struct segtree
{
vector<pll> sum;
ll siz;
segtree(ll num)
{
siz = num;
sum.resize(4 * num + 10, mp(inf, inf));
}
void update(ll lx, ll rx, ll ind, ll level, ll node_number, ll x)
{
if (lx + 1 == rx)
{
sum[x].ff = level;
sum[x].ss = node_number;
return;
}
ll mid = (lx + rx) / 2;
if (ind < mid)
{
update(lx, mid, ind, level, node_number, 2 * x + 1);
}
else
{
update(mid, rx, ind, level, node_number, 2 * x + 2);
}
sum[x].ff = min(sum[2 * x + 1].ff, sum[2 * x + 2].ff);
sum[x].ss = sum[2 * x + 2].ss;
if (sum[x].ff == sum[2 * x + 1].ff)
{
sum[x].ss = sum[2 * x + 1].ss;
}
if (sum[2 * x + 1].ff == sum[x * 2 + 2].ff)
{
sum[x].ss = min(sum[2 * x + 1].ss, sum[x * 2 + 2].ss);
}
}
void update(ll ind, ll level, ll node_number)
{
update(0, siz, ind, level, node_number, 0);
}
pll find_min(ll lx, ll rx, ll l, ll r, ll x)
{
if (lx >= l && rx <= r)
{
return sum[x];
}
if (lx >= r || l >= rx)
{
return {inf, inf};
}
ll mid = (lx + rx) / 2;
pll l1 = find_min(lx, mid, l, r, 2 * x + 1);
pll r1 = find_min(mid, rx, l, r, 2 * x + 2);
if (l1.ff < r1.ff)
{
return l1;
}
if (l1.ff > r1.ff)
{
return r1;
}
if (l1.ss == min(l1.ss, r1.ss))
{
return l1;
}
return r1;
}
ll find_min(ll l, ll r)
{
return find_min(0, siz, l, r, 0).ss;
}
};
#define endl "\n"
void solve(){
int n;
cin >> n;adj.clear();in.clear();
adj.resize(n + 1);
in.resize(n + 1);
out = in;
tim = 1;
lev = out;
f(i, 0, n - 1)
{
ll a, b;
cin >> a >> b;
adj[a].pb(b);
adj[b].pb(a);
}
dfs(1, 1);
// make it in out
int q;
cin >> q;
segtree tree(out[1] + 10);
vll visited(n+1);
while (q--)
{
ll a;
cin >> a;
if(visited[a]){
cout<<"YES "<<a<<endl;continue;
}
visited[a]=1;
ll res = tree.find_min(in[a] + 1, out[a]);
tree.update(in[a], lev[a], a);
if (res == inf)
{
cout << "NO" << endl;
continue;
}
else
{
cout << "YES " << res << endl;
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout << fixed << showpoint;
cout << setprecision(12);
long long test_m=1;
cin>>test_m;int kickstart=1;
//WE WILL WIN.
while(test_m--) {
//cout<<"Case #"<<kickstart++<<": ";
solve();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLy8jaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+IC8vIENvbW1vbiBmaWxlCi8vI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+IC8vIEluY2x1ZGluZyB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGUKLy91c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsgLy8gIG9yZGVyIG9mIGtleShrZXlzIHN0cmljdGx5IGxlc3MgdGhhbikgIC8vIGZpbmRfYnlfb3JkZXIKLy90eXBlZGVmIHRyZWU8bG9uZyBsb25nLG51bGxfdHlwZSxsZXNzPD4scmJfdHJlZV90YWcsdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPiBvcmRlcmVkX3NldDsKLy90eXBlZGVmIHRyZWU8bG9uZyBsb25nLCBudWxsX3R5cGUsIGxlc3NfZXF1YWw8PiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4gaW5kZXhlZF9tdWx0aXNldDsKCi8vSUYgV0EgQ0hFQ0sgRk9SIDogLQovLyAxID4gRURHRSBDQVNFUyBMSUtFIE49MSAsIE49MAovLyAyID4gU0lHTkVEIElOVEVHRVIgT1ZFUkZMT1cgSU4gTU9ECi8vIDMgPiBDSEVDSyBUSEUgQ09ERSBGT1IgTE9HSUNBTCBFUlJPUlMgQU5EIFNFRyBGQVVMVFMKLy8gNCA+IFJFQUQgVEhFIFBTIE9OQ0UgQUdBSU4gLCBpZiBoYXZpbmcgZG91YmxlIGRpZmYgbGVzcyB0aGFuIDFlLTggaXMgc2FtZS4KLy8gNSA+IFlvdSBIYXZlIGdvdCBBQyAuCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgaW5mIChsb25nIGxvbmcpKDJlMTgpCiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKI2RlZmluZSBmKGksYSxiKSBmb3IobGwgaT1hOyhpKTxsb25nKGIpOyhpKSsrKQojZGVmaW5lIGZyKGksYSxiKSBmb3IobGwgaT1hOyhpKT49KGxvbmcgbG9uZykoYik7KGkpLS0pCiNkZWZpbmUgaXQoYikgIGZvcihhdXRvICZpdDooYikpCiNkZWZpbmUgTlVNICA5OTgyNDQzNTMKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgp0eXBlZGVmIHZlY3RvcjxsbD4gdmxsOwp0eXBlZGVmIHBhaXI8bGwsbGw+IHBsbDsKbG9uZyBsb25nIGJpbnBvdyhsb25nIGxvbmcgYSwgbG9uZyBsb25nIGIpIHsKICAgIGlmIChiID09IDApCiAgICAgICAgcmV0dXJuIDE7CiAgICBsb25nIGxvbmcgcmVzID0gYmlucG93KGEsIGIgLyAyKSVOVU07CiAgICBpZiAoYiAlIDIpCiAgICAgICAgcmV0dXJuICgoKHJlcyAqIHJlcyklTlVNKSogYSklTlVNOwogICAgZWxzZQogICAgICAgIHJldHVybiAocmVzICogcmVzKSVOVU07Cn0Kdm9pZCByZWFkKHZsbCAmYXJyLGxsIG4pIHsKICAgIGlmIChhcnIuc2l6ZSgpICE9IG4pIHsgYXJyLmFzc2lnbihuLCAwKTsgfWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKWNpbiA+PiBhcnJbaV07Cn0KaW5saW5lIGxsIG1pbihsbCBhLGxsIGIpCnsKICAgIGlmKGE+YilyZXR1cm4gYjtyZXR1cm4gYTsKfQppbmxpbmUgbGwgbWF4KGxsIGEsIGxsIGIpCnsKICAgIGlmKGE+YilyZXR1cm4gYTtyZXR1cm4gYjsKfQppbmxpbmUgbGwgZGlmKGxsIGEsbGwgYikKewogICAgaWYoYT5iKXJldHVybiBhLWI7cmV0dXJuIGItYTsKfQpsb25nIGxvbmcgZ2NkKGxvbmcgbG9uZyBhLGxvbmcgbG9uZyBiKQp7CiAgICBpZihiPT0wKXJldHVybiBhO3JldHVybiBnY2QoYixhJWIpOwp9CmxvbmcgbG9uZyBsY20obG9uZyBsb25nIGEsbG9uZyBsb25nIGIpCnsKICAgIGxvbmcgbG9uZyBrPWdjZChhLGIpO3JldHVybiAoYSpiKS9rOwp9CnZlY3RvcjxsbD4gaW47CnZlY3RvcjxsbD4gb3V0Owp2ZWN0b3I8dmxsPiBhZGo7CnZlY3RvcjxsbD4gbGV2OwppbnQgdGltID0gMTsKdm9pZCBkZnMoaW50IHN0YXJ0LCBpbnQgcGFyLCBsbCBsZXZlbCA9IDEpCnsKICAgIGluW3N0YXJ0XSA9IHRpbSsrOwogICAgbGV2W3N0YXJ0XSA9IGxldmVsOwogICAgaXQoYWRqW3N0YXJ0XSkKICAgIHsKICAgICAgICBpZiAoaXQgIT0gcGFyKQogICAgICAgICAgICBkZnMoaXQsIHN0YXJ0LCBsZXZlbCArIDEpOwogICAgfQogICAgb3V0W3N0YXJ0XSA9IHRpbSsrOwp9CnN0cnVjdCBzZWd0cmVlCnsKICAgIHZlY3RvcjxwbGw+IHN1bTsKICAgIGxsIHNpejsKICAgIHNlZ3RyZWUobGwgbnVtKQogICAgewogICAgICAgIHNpeiA9IG51bTsKICAgICAgICBzdW0ucmVzaXplKDQgKiBudW0gKyAxMCwgbXAoaW5mLCBpbmYpKTsKICAgIH0KICAgIHZvaWQgdXBkYXRlKGxsIGx4LCBsbCByeCwgbGwgaW5kLCBsbCBsZXZlbCwgbGwgbm9kZV9udW1iZXIsIGxsIHgpCiAgICB7CiAgICAgICAgaWYgKGx4ICsgMSA9PSByeCkKICAgICAgICB7CiAgICAgICAgICAgIHN1bVt4XS5mZiA9IGxldmVsOwogICAgICAgICAgICBzdW1beF0uc3MgPSBub2RlX251bWJlcjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBsbCBtaWQgPSAobHggKyByeCkgLyAyOwogICAgICAgIGlmIChpbmQgPCBtaWQpCiAgICAgICAgewogICAgICAgICAgICB1cGRhdGUobHgsIG1pZCwgaW5kLCBsZXZlbCwgbm9kZV9udW1iZXIsIDIgKiB4ICsgMSk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHVwZGF0ZShtaWQsIHJ4LCBpbmQsIGxldmVsLCBub2RlX251bWJlciwgMiAqIHggKyAyKTsKICAgICAgICB9CiAgICAgICAgc3VtW3hdLmZmID0gbWluKHN1bVsyICogeCArIDFdLmZmLCBzdW1bMiAqIHggKyAyXS5mZik7CiAgICAgICAgc3VtW3hdLnNzID0gc3VtWzIgKiB4ICsgMl0uc3M7CiAgICAgICAgaWYgKHN1bVt4XS5mZiA9PSBzdW1bMiAqIHggKyAxXS5mZikKICAgICAgICB7CiAgICAgICAgICAgIHN1bVt4XS5zcyA9IHN1bVsyICogeCArIDFdLnNzOwogICAgICAgIH0KICAgICAgICBpZiAoc3VtWzIgKiB4ICsgMV0uZmYgPT0gc3VtW3ggKiAyICsgMl0uZmYpCiAgICAgICAgewogICAgICAgICAgICBzdW1beF0uc3MgPSBtaW4oc3VtWzIgKiB4ICsgMV0uc3MsIHN1bVt4ICogMiArIDJdLnNzKTsKICAgICAgICB9CiAgICB9CiAgICB2b2lkIHVwZGF0ZShsbCBpbmQsIGxsIGxldmVsLCBsbCBub2RlX251bWJlcikKICAgIHsKICAgICAgICB1cGRhdGUoMCwgc2l6LCBpbmQsIGxldmVsLCBub2RlX251bWJlciwgMCk7CiAgICB9CiAgICBwbGwgZmluZF9taW4obGwgbHgsIGxsIHJ4LCBsbCBsLCBsbCByLCBsbCB4KQogICAgewogICAgICAgIGlmIChseCA+PSBsICYmIHJ4IDw9IHIpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gc3VtW3hdOwogICAgICAgIH0KICAgICAgICBpZiAobHggPj0gciB8fCBsID49IHJ4KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHtpbmYsIGluZn07CiAgICAgICAgfQogICAgICAgIGxsIG1pZCA9IChseCArIHJ4KSAvIDI7CiAgICAgICAgcGxsIGwxID0gZmluZF9taW4obHgsIG1pZCwgbCwgciwgMiAqIHggKyAxKTsKICAgICAgICBwbGwgcjEgPSBmaW5kX21pbihtaWQsIHJ4LCBsLCByLCAyICogeCArIDIpOwogICAgICAgIGlmIChsMS5mZiA8IHIxLmZmKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGwxOwogICAgICAgIH0KICAgICAgICBpZiAobDEuZmYgPiByMS5mZikKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiByMTsKICAgICAgICB9CiAgICAgICAgaWYgKGwxLnNzID09IG1pbihsMS5zcywgcjEuc3MpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGwxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcjE7CiAgICB9CiAgICBsbCBmaW5kX21pbihsbCBsLCBsbCByKQogICAgewogICAgICAgIHJldHVybiBmaW5kX21pbigwLCBzaXosIGwsIHIsIDApLnNzOwogICAgfQp9OwojZGVmaW5lIGVuZGwgIlxuIgp2b2lkIHNvbHZlKCl7CiAgICBpbnQgbjsKICAgIGNpbiA+PiBuO2Fkai5jbGVhcigpO2luLmNsZWFyKCk7CiAgICBhZGoucmVzaXplKG4gKyAxKTsKICAgIGluLnJlc2l6ZShuICsgMSk7CiAgICBvdXQgPSBpbjsKICAgIHRpbSA9IDE7CiAgICBsZXYgPSBvdXQ7CiAgICBmKGksIDAsIG4gLSAxKQogICAgewogICAgICAgIGxsIGEsIGI7CiAgICAgICAgY2luID4+IGEgPj4gYjsKICAgICAgICBhZGpbYV0ucGIoYik7CiAgICAgICAgYWRqW2JdLnBiKGEpOwogICAgfQogICAgZGZzKDEsIDEpOwogICAgLy8gbWFrZSBpdCBpbiBvdXQKICAgIGludCBxOwogICAgY2luID4+IHE7CiAgICBzZWd0cmVlIHRyZWUob3V0WzFdICsgMTApOwogICAgdmxsIHZpc2l0ZWQobisxKTsKICAgIHdoaWxlIChxLS0pCiAgICB7CiAgICAgICAgbGwgYTsKICAgICAgICBjaW4gPj4gYTsKICAgICAgICBpZih2aXNpdGVkW2FdKXsKICAgICAgICAgICAgY291dDw8IllFUyAiPDxhPDxlbmRsO2NvbnRpbnVlOwogICAgICAgIH0KICAgICAgICB2aXNpdGVkW2FdPTE7CiAgICAgICAgbGwgcmVzID0gdHJlZS5maW5kX21pbihpblthXSArIDEsIG91dFthXSk7CiAgICAgICAgdHJlZS51cGRhdGUoaW5bYV0sIGxldlthXSwgYSk7CiAgICAgICAgaWYgKHJlcyA9PSBpbmYpCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8ICJOTyIgPDwgZW5kbDsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgIllFUyAiIDw8IHJlcyA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KfQppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKICAgIGNvdXQgPDwgZml4ZWQgPDwgc2hvd3BvaW50OwogICAgY291dCA8PCBzZXRwcmVjaXNpb24oMTIpOwogICAgbG9uZyBsb25nIHRlc3RfbT0xOwogICAgY2luPj50ZXN0X207aW50IGtpY2tzdGFydD0xOwogICAgLy9XRSBXSUxMIFdJTi4KICAgIHdoaWxlKHRlc3RfbS0tKSB7CiAgICAgICAgLy9jb3V0PDwiQ2FzZSAjIjw8a2lja3N0YXJ0Kys8PCI6ICI7CiAgICAgICAgc29sdmUoKTsKICAgIH0KfQ==