#include <bits/stdc++.h>
using namespace std;
struct TREE {
  int to, nxt;
} t[250000];
int last[100005], cnt;
void build(int u, int v) {
  t[++cnt].to = v;
  t[cnt].nxt = last[u];
  last[u] = cnt;
}
int nd;
int res = 0;
int yy;
int a, b;
void dfs(int fa, int x, int dep) {
  if (x == b && fa != 0) yy = dep;
  int e = last[x];
  if (res < dep) {
    res = dep;
    nd = x;
  }
  while (e) {
    int v = t[e].to;
    if (v != fa) {
      dfs(x, v, dep + 1);
    }
    e = t[e].nxt;
  }
}
int main() {
  int i, j, k, m, n, tt, da, db, x, y;
  scanf("%d", &tt);
  while (tt--) {
    scanf("%d%d%d%d%d", &n, &a, &b, &da, &db);
    cnt = 0;
    res = 0;
    for (i = 1; i <= n; i++) {
      last[i] = 0;
    }
    for (i = 1; i < n; i++) {
      scanf("%d%d", &x, &y);
      build(x, y);
      build(y, x);
    }
    int d;
    dfs(0, a, 0);
    int od = yy;
    dfs(0, nd, 0);
    da = min(da, res);
    db = min(db, res);
    if (od <= da || da >= (db + 1) / 2)
      printf("Alice\n");
    else
      printf("Bob\n");
  }
  return 0;
}
