#include <bits/stdc++.h>
using namespace std;
int cases = 1;
vector<int> adj[100005], depth(100005);
int dia;
int dfs(int nd, int par) {
  int len = 0;
  for (auto ch : adj[nd]) {
    if (ch == par) continue;
    depth[ch] = depth[nd] + 1;
    int cur_subtree_len = dfs(ch, nd);
    dia = max(dia, cur_subtree_len + len);
    len = max(cur_subtree_len, len);
  }
  return len + 1;
}
int solve() {
  int n, a, b, da, db, x, y;
  cin >> n >> a >> b >> da >> db;
  for (int i = 1; i <= n; ++i) adj[i].clear();
  for (int i = 0; i < n - 1; ++i)
    cin >> x >> y, adj[x].push_back(y), adj[y].push_back(x);
  depth[a] = 0;
  dia = 0;
  dfs(a, -1);
  if (depth[b] <= da || 2 * da >= min(dia, db))
    return cout << "Alice"
                << "\n",
           0;
  return cout << "Bob"
              << "\n",
         0;
}
signed main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int test;
  cin >> test;
  while (test--) solve();
  return 0;
}
