#include <bits/stdc++.h>
using namespace std;
int main() {
  int T;
  cin >> T;
  for (int n_case = 1; n_case <= T; ++n_case) {
    int n, a, b, da, db;
    cin >> n >> a >> b >> da >> db;
    --a;
    --b;
    vector<vector<int>> e(n);
    for (int i = 0; i < n - 1; ++i) {
      int u, v;
      cin >> u >> v;
      --u;
      --v;
      e[u].push_back(v);
      e[v].push_back(u);
    }
    vector<int> dist(n);
    function<void(int, int)> dfs = [&](int v, int parent) {
      for (int u : e[v]) {
        if (u != parent) {
          dist[u] = dist[v] + 1;
          dfs(u, v);
        }
      }
    };
    dfs(a, -1);
    if (dist[b] <= da) {
      cout << "Alice\n";
      continue;
    }
    int v = max_element(dist.begin(), dist.end()) - dist.begin();
    dist[v] = 0;
    dfs(v, -1);
    v = max_element(dist.begin(), dist.end()) - dist.begin();
    dist[v] = 0;
    dfs(v, -1);
    int diam = *max_element(dist.begin(), dist.end());
    if (diam <= 2 * da) {
      cout << "Alice\n";
      continue;
    }
    if (db <= 2 * da) {
      cout << "Alice\n";
      continue;
    }
    cout << "Bob\n";
  }
  return 0;
}
