#include using namespace std; map, bool> memo; // 現在の状態から手番プレイヤーが勝てるなら true bool win(vector A) { if (memo.count(A)) return memo[A]; int N = A.size(); for (int i = 0; i < N; ++i) { if (A[i] == 0) continue; vector B = A; B[i]--; // 山 i が 0 になったら、それ以降もすべて 0 if (B[i] == 0) { for (int j = i; j < N; ++j) { B[j] = 0; } } // 相手が負ける遷移先が1つでもあれば勝ち if (!win(B)) { return memo[A] = true; } } // 合法手がない、または全て相手勝ち return memo[A] = false; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; while (T--) { int N; cin >> N; vector A(N); for (int &x : A) cin >> x; memo.clear(); cout << (win(A) ? "Alice" : "Bob") << '\n'; } return 0; }