#include <bits/stdc++.h>
using namespace std;
const int mxN = 1e5 + 5;
vector<int> graph[mxN];
int vis[mxN], dist[mxN], maxdepth, vert = 1;
void dfs(int v, int depth) {
  if (vis[v]) return;
  vis[v] = 1;
  dist[v] = depth;
  if (depth > maxdepth) vert = v, maxdepth = depth;
  for (auto u : graph[v]) {
    dfs(u, depth + 1);
  }
}
void solve() {
  int n, a, b, da, db, x, y, distab;
  cin >> n >> a >> b >> da >> db;
  for (int i = 1; i < n; i++) {
    cin >> x >> y;
    graph[x].push_back(y);
    graph[y].push_back(x);
  }
  dfs(a, 0);
  distab = dist[b];
  memset(vis, 0, 4 * (n + 2));
  memset(dist, 0, 4 * (n + 2));
  maxdepth = 0;
  dfs(vert, 0);
  if (distab <= da || db <= 2 * da || maxdepth <= 2 * da)
    cout << "Alice\n";
  else
    cout << "Bob\n";
  memset(vis, 0, 4 * (n + 2));
  memset(dist, 0, 4 * (n + 2));
  for (int i = 0; i <= n; i++) graph[i].clear();
  maxdepth = 0;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int T = 1;
  cin >> T;
  while (T--) {
    solve();
  }
}
