#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define bye return
#define yes "YES"
#define no "NO"
#define Shoyo ios_base::sync_with_stdio(0);cin.tie(NULL);
#define el "\n"
const ll Log=18, N=1e6;
ll ans[N][Log],mx[N][Log],dist[N];
ll level[N]={0};
vector<vector<ll>> adj;
void dfs(ll u,ll p) {//nlogn
ans[u][0]=p;
level[u]=level[p]+1;
for (ll i=1;i<Log;i++) {
ll dad=ans[u][i-1];
mx[u][i]=max(mx[u][i-1],mx[dad][i-1]);
ans[u][i]=ans[dad][i-1];
}
for (auto v:adj[u]) {
if (v!=p) {
dfs(v,u);
}
}
}
ll kth(ll u,ll k) {//logn
for (ll i=0;i<Log;i++) {
if ((k>>i)&1) {
u=ans[u][i];
}
}
return u;
}
ll LCA(ll u,ll v) {//logn
if (level[u]<level[v]) swap(u,v);
u=kth(u,level[u]-level[v]);
if (u==v) return u;
for (ll i=Log-1;i>=0;i--) {
if (ans[u][i] != ans[v][i]) {
u=ans[u][i];
v=ans[v][i];
}
}
return ans[u][0];
}
void solve() {
ll n,a,b;cin>>n>>a>>b;
adj.assign(n+1,{});
for (ll i=1;i<n;i++) {
ll x,y;cin>>x>>y;
adj[x].push_back(y);
adj[y].push_back(x);
}
dfs(a,0);
map<ll,ll>mp;
for (ll i=1;i<=n;i++) {
mp[LCA(i,b)]++;
}
// for (auto [a,b]:mp)cout<<a<<" "<<b<<endl;
}
int main(){
Shoyo;
ll t = 1;
if(!(cin >> t)) return 0;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwojZGVmaW5lIGJ5ZSByZXR1cm4KI2RlZmluZSB5ZXMgIllFUyIKI2RlZmluZSBubyAiTk8iCiNkZWZpbmUgU2hveW8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKE5VTEwpOwojZGVmaW5lIGVsICJcbiIKY29uc3QgbGwgTG9nPTE4LCBOPTFlNjsKbGwgYW5zW05dW0xvZ10sbXhbTl1bTG9nXSxkaXN0W05dOwpsbCBsZXZlbFtOXT17MH07CnZlY3Rvcjx2ZWN0b3I8bGw+PiBhZGo7CnZvaWQgZGZzKGxsIHUsbGwgcCkgey8vbmxvZ24KICAgIGFuc1t1XVswXT1wOwogICAgbGV2ZWxbdV09bGV2ZWxbcF0rMTsKICAgIGZvciAobGwgaT0xO2k8TG9nO2krKykgewogICAgICAgIGxsIGRhZD1hbnNbdV1baS0xXTsKICAgICAgICBteFt1XVtpXT1tYXgobXhbdV1baS0xXSxteFtkYWRdW2ktMV0pOwogICAgICAgIGFuc1t1XVtpXT1hbnNbZGFkXVtpLTFdOwogICAgfQogICAgZm9yIChhdXRvIHY6YWRqW3VdKSB7CiAgICAgICAgaWYgKHYhPXApIHsKICAgICAgICAgICAgZGZzKHYsdSk7CiAgICAgICAgfQogICAgfQp9CmxsIGt0aChsbCB1LGxsIGspIHsvL2xvZ24KICAgIGZvciAobGwgaT0wO2k8TG9nO2krKykgewogICAgICAgIGlmICgoaz4+aSkmMSkgewogICAgICAgICAgICB1PWFuc1t1XVtpXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdTsKfQpsbCBMQ0EobGwgdSxsbCB2KSB7Ly9sb2duCiAgICBpZiAobGV2ZWxbdV08bGV2ZWxbdl0pIHN3YXAodSx2KTsKICAgIHU9a3RoKHUsbGV2ZWxbdV0tbGV2ZWxbdl0pOwogICAgaWYgKHU9PXYpIHJldHVybiB1OwogICAgZm9yIChsbCBpPUxvZy0xO2k+PTA7aS0tKSB7CiAgICAgICAgaWYgKGFuc1t1XVtpXSAhPSBhbnNbdl1baV0pIHsKICAgICAgICAgICAgdT1hbnNbdV1baV07CiAgICAgICAgICAgIHY9YW5zW3ZdW2ldOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhbnNbdV1bMF07Cn0Kdm9pZCBzb2x2ZSgpIHsKbGwgbixhLGI7Y2luPj5uPj5hPj5iOwogICAgYWRqLmFzc2lnbihuKzEse30pOwogICAgZm9yIChsbCBpPTE7aTxuO2krKykgewogICAgICAgIGxsIHgseTtjaW4+Png+Pnk7CiAgICAgICAgYWRqW3hdLnB1c2hfYmFjayh5KTsKICAgICAgICBhZGpbeV0ucHVzaF9iYWNrKHgpOwogICAgfQogICAgZGZzKGEsMCk7CiAgICBtYXA8bGwsbGw+bXA7CiAgICBmb3IgKGxsIGk9MTtpPD1uO2krKykgewogICAgICAgIG1wW0xDQShpLGIpXSsrOwogICAgfQogIC8vICBmb3IgKGF1dG8gW2EsYl06bXApY291dDw8YTw8IiAiPDxiPDxlbmRsOwoKfQppbnQgbWFpbigpewogICAgU2hveW87CiAgICBsbCB0ID0gMTsKICAgIGlmKCEoY2luID4+IHQpKSByZXR1cm4gMDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=