#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 6;
vector<int> G[N];
int d[N];
void dfs(int u, int f, int dep) {
  d[u] = dep;
  for (int i = 0, iend = G[u].size(); i < iend; ++i) {
    int v = G[u][i];
    if (v != f) dfs(v, u, dep + 1);
  }
}
int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    int n, a, b, da, db;
    scanf("%d%d%d%d%d", &n, &a, &b, &da, &db);
    for (int i = 1; i <= n; ++i) G[i].clear();
    for (int i = 1; i <= n - 1; ++i) {
      int u, v;
      scanf("%d%d", &u, &v);
      G[u].push_back(v), G[v].push_back(u);
    }
    if (2 * da >= db) {
      puts("Alice");
      continue;
    }
    dfs(1, 0, 0);
    int u = 0;
    for (int i = 1; i <= n; ++i)
      if (d[i] > d[u]) u = i;
    dfs(u, 0, 0);
    int mx = 0;
    for (int i = 1; i <= n; ++i) mx = max(mx, d[i]);
    if (da >= (mx + 1) / 2) {
      puts("Alice");
      continue;
    }
    dfs(a, 0, 0);
    puts(da >= d[b] ? "Alice" : "Bob");
  }
  return 0;
}
