#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,int> mp; // function)> f = [&](vector v) { // if (mp.contains(v)) return mp[v]; // if (v.empty()) return mp[v] = 0; // int ret = 0; // rep(i,0,len(v)) { // --v[i]; // if (v[i] == 0) { // ret |= 1-f({v.begin(), v.begin()+i}); // } else { // ret |= 1-f(v); // } // ++v[i]; // } // return mp[v] = ret; // }; // int n; // cin >> n; // vector a(n); // rep(i,0,n) cin >> a[i]; // cout << f(a) << endl; // int n, m; // cin >> n >> m; function)> solve = [&](vector v) { int n = len(v); vector x = {0}; rep(i,0,n) if (v[i] == 1) x.eb(i+1); if (v.back() != 1) x.eb(n); rep(i,0,len(x)-1) { ll t = 0; rep(j,x[i],x[i+1]) t += v[j]; if (t%2) return 1; } return 0; }; // function,int)> g = [&](vector v, int i) { // if (i == len(v)) { // // int t = 0; // // for (int e : v) { // // if (e == 1) break; // // t += e; // // } // // if (t%2 == 0 || *min_element(all(v)) > 1) return; // // for (int e : v) cout << e << " "; // // cout << "-> " << f(v) << endl; // // cout << f(v) << ":" << solve(v) << endl; // if (solve(v) != f(v)) { // for (int e : v) cout << e << " "; // cout << "-> " << f(v) << endl; // } // return; // } // rep(j,1,m+1) { // v[i] = j; // g(v, i+1); // } // }; // rep(k,1,n+1) { // vector v(k, 0); // g(v, 0); // } int t; cin >> t; while(t--) { int n; cin >> n; vector a(n); rep(i,0,n) cin >> a[i]; if (solve(a)) cout << "Alice" << endl; else cout << "Bob" << endl; } return 0; }