#include #define rep(i, n) for(int i = 0; i < (int)(n); i ++) #define rep1(i, n) for(int i = 1; i <= (int)(n); i ++) #define MP make_pair using namespace std; typedef long long LL; typedef pair PII; const int MOD = 998244353; int sta[10005]; vector G[10005], RG[10005]; int deg[10005]; int gsta(int a, int b, int c, int d) { return a + b * 10 + c * 100 + d * 1000; } void init() { rep(i, 10000) { int a = i % 10, b = i / 10 % 10, c = i / 100 % 10, d = i / 1000 % 10; if(a == 0 || b == 0) continue; if(c == 0 || d == 0) { sta[i] = -1; continue; } G[i].push_back(gsta(c, d, (a + b) % 10, b)); G[i].push_back(gsta(c, d, (a + c) % 10, b)); G[i].push_back(gsta(c, d, (a + d) % 10, b)); G[i].push_back(gsta(c, d, a, (b + a) % 10)); G[i].push_back(gsta(c, d, a, (b + c) % 10)); G[i].push_back(gsta(c, d, a, (b + d) % 10)); } rep(i, 10000) rep(j, G[i].size()) RG[G[i][j]].push_back(i); queue que; rep(i, 10000) if(sta[i] == -1) que.push(i); while(!que.empty()) { int v = que.front(); que.pop(); if(sta[v] == 1) { rep(j, RG[v].size()) { int u = RG[v][j]; deg[u] ++; if(deg[u] == (int)G[u].size()) { sta[u] = -1; que.push(u); } } } else rep(j, RG[v].size()) { int u = RG[v][j]; if(sta[u] == 0) { sta[u] = 1; que.push(u); } } } /* rep(i, 10000) if(sta[i] == -1) rep(j, G[i].size()) assert(sta[G[i][j]] == 1); rep(i, 10000) if(sta[i] == 1) { bool ok = false; rep(j, G[i].size()) if(sta[G[i][j]] == -1) ok = true; assert(ok); } rep(i, 10000) if(!RG[i].empty() && sta[i] != -1) { bool ok = false; rep(j, G[i].size()) if(sta[G[i][j]] != 1) ok = true; assert(ok); } rep(i, 10000) if(!RG[i].empty() && sta[i] != 1) rep(j, G[i].size()) assert(sta[G[i][j]] != -1); */ } void solve() { int a, b, c, d; scanf("%d%d%d%d", &a, &b, &c, &d); int ans = sta[gsta(a, b, c, d)]; if(ans == 1) printf("Alice\n"); else if(ans == -1) printf("Bob\n"); else printf("Tie\n"); } int main() { init(); int T; scanf("%d", &T); while(T --) solve(); return 0; }