#include <bits/stdc++.h>
using namespace std;
vector<int> adj[100005];
int dia = 0, last;
void dfs(int node, int par, int cr) {
  if (cr > dia) dia = cr, last = node;
  for (auto i : adj[node]) {
    if (i != par) {
      dfs(i, node, cr + 1);
    }
  }
}
int dis = 0;
bool found = false;
int n, a, b, da, db;
void find(int node, int parent, int crr) {
  if (found) return;
  if (node == b) {
    dis = crr;
    found = true;
    return;
  }
  for (auto i : adj[node]) {
    if (i != parent) {
      find(i, node, crr + 1);
    }
  }
}
int main() {
  int t;
  cin >> t;
  while (t--) {
    cin >> n >> a >> b >> da >> db;
    for (int i = 1; i <= n; i++) adj[i].clear();
    for (int i = 0; i < n - 1; i++) {
      int x, y;
      cin >> x >> y;
      adj[x].push_back(y);
      adj[y].push_back(x);
    }
    dia = 0;
    dfs(1, 0, 0);
    dfs(last, 0, 0);
    found = false;
    find(a, 0, 0);
    string alc = "Alice\n";
    string bob = "Bob\n";
    if (dis <= da)
      cout << alc;
    else if (da * 2 >= dia)
      cout << alc;
    else if (db > 2 * da)
      cout << bob;
    else
      cout << alc;
  }
}
