#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7, N = 1e5 + 5;
long long n, a, b, da, db;
vector<long long> v[N];
long long dd;
void dfs(long long u, long long p, long long d) {
  if (u == a) {
    dd = d;
  }
  for (long long x : v[u]) {
    if (x != p) {
      dfs(x, u, d + 1);
    }
  }
}
long long depth[N], diameter;
void findDiameter(long long u, long long p) {
  long long mx, mx2;
  mx = mx2 = 0;
  for (long long x : v[u]) {
    if (x != p) {
      findDiameter(x, u);
      if (depth[x] + 1 > mx) {
        mx2 = mx;
        mx = depth[x] + 1;
      } else if (depth[x] + 1 > mx2)
        mx2 = depth[x] + 1;
    }
  }
  diameter = max(diameter, mx + mx2);
  depth[u] = mx;
}
long long solve() {
  cin >> n >> a >> b >> da >> db;
  for (long long i = (long long)0; i < n - 1; i++) {
    long long x, y;
    cin >> x >> y;
    v[x].push_back(y);
    v[y].push_back(x);
  }
  dd = 0;
  dfs(b, -1, 0);
  if (dd <= da) return 1;
  diameter = 0;
  findDiameter(1, 0);
  if (db > 2 * da && diameter > 2 * da) return 0;
  return 1;
}
int32_t main() {
  std::ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long t = 1;
  cin >> t;
  while (t--) {
    cout << (solve() ? "Alice" : "Bob") << '\n';
    for (long long i = (long long)0; i < n + 1; i++) v[i].clear();
  }
}
