#include <bits/stdc++.h>
using namespace std;
const long long INF = 2e17;
const long long MB = 20;
const long long MOD = 1e9 + 7;
vector<vector<long long>> g;
vector<long long> h, p, lca, maxH;
long long n, a, b, da, db;
bool good = false;
vector<bool> used;
void dfs(long long v) {
  long long mx1 = h[v], mx2 = h[v];
  for (long long u : g[v]) {
    if (u != p[v]) {
      p[u] = v;
      h[u] = h[v] + 1;
      dfs(u);
      maxH[v] = max(maxH[v], maxH[u]);
      if (mx1 < maxH[u]) {
        mx2 = mx1;
        mx1 = maxH[u];
      } else if (mx2 < maxH[u]) {
        mx2 = maxH[u];
      }
    }
  }
  maxH[v] = max(maxH[v], h[v]);
  if (mx1 + mx2 - 2 * h[v] >= 2 * da + 1) good = true;
}
void solve() {
  cin >> n >> a >> b >> da >> db;
  a--;
  b--;
  g.clear();
  g.resize(n);
  for (long long i = 0; i < n - 1; i++) {
    long long x, y;
    cin >> x >> y;
    x--;
    y--;
    g[x].push_back(y);
    g[y].push_back(x);
  }
  h.resize(n);
  p.resize(n);
  p[b] = -1;
  h[b] = 0;
  good = false;
  maxH.clear();
  maxH.resize(n);
  dfs(b);
  if (!good || da * 2 + 1 > db || h[a] <= da) {
    cout << "Alice\n";
    return;
  }
  cout << "Bob\n";
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  cout << fixed;
  cout.precision(12);
  long long t;
  cin >> t;
  while (t--) solve();
}
