#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
int n;
struct Edge {
  int to, next;
} edge[N];
int head[N], idx;
void addedge(int u, int v) {
  edge[++idx].to = v;
  edge[idx].next = head[u];
  head[u] = idx;
}
int dis[N];
void dfs(int u, int fa) {
  for (int i = head[u]; i; i = edge[i].next) {
    int v = edge[i].to;
    if (v == fa) continue;
    dis[v] = dis[u] + 1;
    dfs(v, u);
  }
}
int T;
int x, y, dx, dy;
int main() {
  cin >> T;
  while (T--) {
    idx = 0;
    memset(head, 0, sizeof(head));
    cin >> n >> x >> y >> dx >> dy;
    for (int i = 1, a, b; i < n; i++) {
      cin >> a >> b;
      addedge(a, b);
      addedge(b, a);
    }
    if (dy <= 2 * dx) {
      puts("Alice");
      continue;
    }
    memset(dis, 0, sizeof(dis));
    dfs(x, 0);
    int maxdis = 0, v = 1;
    for (int i = 1; i <= n; i++) {
      if (dis[i] > maxdis) {
        maxdis = dis[i];
        v = i;
      }
    }
    int q = dis[y];
    if (q <= dx) {
      puts("Alice");
      continue;
    }
    memset(dis, 0, sizeof(dis));
    dfs(v, 0);
    int maxdis2 = 0;
    for (int i = 1; i <= n; i++) maxdis2 = max(maxdis2, dis[i]);
    int len = maxdis2;
    if (len <= 2 * dx) {
      puts("Alice");
    } else
      puts("Bob");
  }
  return 0;
}
