#include <bits/stdc++.h>
using namespace std;
vector<long long> g[100005];
int vis[100005];
int vis2[100005];
long long h, dep, z;
void dfs(long long x, long long d, long long b) {
  vis[x] = 1;
  for (auto y : g[x]) {
    if (vis[y] == 0) {
      if (y == b) {
        h = d + 1;
        break;
      }
      dfs(y, d + 1, b);
    }
  }
}
void dfs2(long long x, long long d) {
  vis2[x] = 1;
  if (dep < d) {
    dep = max(dep, d);
    z = x;
  }
  for (auto y : g[x]) {
    if (vis2[y] == 0) {
      dfs2(y, d + 1);
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL), cout.tie(NULL);
  int tc;
  cin >> tc;
  while (tc--) {
    long long n, a, b, da, db, i;
    cin >> n >> a >> b >> da >> db;
    for (i = 0; i < n + 1; i++) {
      g[i + 1].clear();
      vis[i] = 0;
      vis2[i] = 0;
    }
    dep = 0;
    long long x, y;
    for (i = 0; i < n - 1; i++) {
      cin >> x >> y;
      g[x].push_back(y);
      g[y].push_back(x);
    }
    dfs(a, 0, b);
    dfs2(b, 0);
    for (i = 0; i < n + 1; i++) vis2[i] = 0;
    dfs2(z, 0);
    long long p = h - da;
    if (p <= 0) {
      cout << "Alice\n";
    } else if (db > 2 * da && dep > 2 * da) {
      cout << "Bob\n";
    } else
      cout << "Alice\n";
  }
  return 0;
}
