#include <bits/stdc++.h>
using namespace std;
long long q, n, a, b, da, db;
long long ee, h[100005], nex[100005 << 1], to[100005 << 1];
long long dep[100005], f[100005][2], dm;
void init_() {
  ee = dm = 0;
  for (long long i = 0; i <= n + 1; i++) h[i] = dep[i] = f[i][0] = f[i][1] = 0;
}
void addedge(long long x, long long y) {
  nex[++ee] = h[x];
  to[ee] = y;
  h[x] = ee;
}
void dfs(long long x, long long pre) {
  dep[x] = dep[pre] + 1;
  for (long long i = h[x]; i; i = nex[i])
    if (to[i] != pre) {
      dfs(to[i], x);
      if (f[to[i]][1] + 1 > f[x][1])
        f[x][0] = f[x][1], f[x][1] = f[to[i]][1] + 1;
      else if (f[to[i]][1] + 1 > f[x][0])
        f[x][0] = f[to[i]][1] + 1;
    }
  dm = max(dm, f[x][1] + f[x][0]);
}
signed main() {
  cin >> q;
  while (q--) {
    cin >> n >> a >> b >> da >> db;
    init_();
    for (long long i = 1, x, y; i < n && cin >> x >> y; i++)
      addedge(x, y), addedge(y, x);
    dfs(a, 0);
    if (dep[b] - dep[a] <= da || 2 * da >= db || 2 * da >= dm)
      puts("Alice");
    else
      puts("Bob");
  }
}
