#include <bits/stdc++.h>
using namespace std;
int main() {
  int t;
  cin >> t;
  while (t--) {
    int n, a, b, da, db;
    cin >> n >> a >> b >> da >> db;
    vector<vector<int>> gr(n + 1);
    int u, v;
    for (int i = 1; i < n; i++) {
      cin >> u >> v;
      gr[u].push_back(v);
      gr[v].push_back(u);
    }
    if (da >= db) {
      cout << "Alice\n";
      continue;
    }
    vector<int> dist(n + 1), ma(n + 1);
    dist[0] = -1;
    function<void(int, int)> dfs = [&](int node, int par) {
      dist[node] = 1 + dist[par];
      ma[node] = 0;
      for (int nxt : gr[node]) {
        if (nxt != par) {
          dfs(nxt, node);
          ma[node] = max(ma[node], 1 + ma[nxt]);
        }
      }
    };
    dfs(a, 0);
    int distb = ma[b];
    if (dist[b] <= da) {
      cout << "Alice\n";
      continue;
    }
    int root = 1;
    for (int i = 1; i <= n; i++) {
      if (dist[i] > dist[root]) root = i;
    }
    dfs(root, 0);
    int dia = *max_element(dist.begin(), dist.end());
    if (da >= (dia + 1) / 2) {
      cout << "Alice\n";
      continue;
    }
    if (db > 2 * da) {
      cout << "Bob\n";
    } else {
      cout << "Alice\n";
    }
  }
  return 0;
}
