#include #define fi first #define se second #define rep(i,s,n) for (int i = (s); i < (n); ++i) #define rrep(i,g,n) for (int i = (n)-1; i >= (g); --i) #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() #define len(x) (int)(x).size() #define dup(x,y) (((x)+(y)-1)/(y)) #define pb push_back #define eb emplace_back #define Field(T) vector> using namespace std; using ll = long long; using ull = unsigned long long; template using pq = priority_queue,greater>; using P = pair; templatebool chmax(T&a,T b){if(abool chmin(T&a,T b){if(b> h >> w >> r >> c; vector s(h, string(w, '.')); stack

stk; function f = [&](int x, int y) { bool ret = 0; rep(d,0,4) { int nx = x+dx[d], ny = y+dy[d]; if (nx < 0 || nx >= h || ny < 0 || ny >= w) continue; if (s[nx][ny] == '#') continue; int cx = x, cy = y, cnt = 0; while(0 <= cx+dx[d] && cx+dx[d] < h && 0 <= cy+dy[d] && cy+dy[d] < w && s[cx+dx[d]][cy+dy[d]] == '.') { s[cx][cy] = '#'; stk.emplace(cx, cy); ++cnt; cx += dx[d], cy += dy[d]; } ret |= (f(cx, cy)^1); while(cnt--) { s[stk.top().fi][stk.top().se] = '.'; } } return ret; }; if (f(r-1, c-1)) { cout << "Alice" << endl; } else { cout << "Bob" << endl; } } int main() { int t; cin >> t; while(t--) solve(); return 0; }