#include <bits/stdc++.h>
using namespace std;
typedef double dbl;
const dbl EPS = 1e-8;
int sgn(dbl a) { return (a > EPS) - (a < -EPS); }
int sgn(dbl a, dbl b) { return sgn(a-b); }
template <typename T> T sq(T a) { return a*a; }
const int MAXN = 2.1e4;
int curX;
struct circle {
int a, b, r;
circle() {}
circle(int a_, int b_, int r_) : a(a_), b(b_), r(r_) {}
dbl get_y(int t) {
dbl y = t * sqrt(sq(r) - sq(curX-a)) + b;
return y;
}
} circs[MAXN];
struct event {
int x, ind;
event() {}
event(int x_, int ind_) : x(x_), ind(ind_) {}
bool operator < (const event& o) const {
return make_pair(x, ind) < make_pair(o.x, o.ind);
}
};
int sgn(int i) { return (i >= 0) - (i < 0); }
int realind(int i) { return max(i, ~i); }
struct cmp {
bool operator () (int i, int j) const {
dbl yi = circs[realind(i)].get_y(sgn(i));
dbl yj = circs[realind(j)].get_y(sgn(j));
int s = sgn(yi, yj);
if (s == 0) {
return i < j;
} else {
return s < 0;
}
}
};
vector<int> adj[MAXN];
int depth[MAXN];
int par[MAXN];
int dfs_grundy(int cur) {
int res = 0;
for (int z = 0; z < int(adj[cur].size()); z++) {
int nxt = adj[cur][z];
res ^= dfs_grundy(nxt)+1;
}
return res;
}
bool go() {
int N; cin >> N;
circs[0] = circle(0, 0, int(4.1e4));
N++;
for (int i = 1; i < N; i++) {
int a, b, r; cin >> a >> b >> r;
circs[i] = circle(a, b, r);
}
vector<event> evts; evts.reserve(2*N);
for (int i = 0; i < N; i++) {
int a = circs[i].a;
int r = circs[i].r;
evts.push_back(event(a-r, i));
evts.push_back(event(a+r, ~i));
}
sort(evts.begin(), evts.end());
for (int i = 0; i < N; i++) {
adj[i].clear();
depth[i] = -1;
par[i] = -1;
}
depth[0] = 0;
set<int, cmp> arcs;
for (int z = 0; z < 2*N; z++) {
event& evt = evts[z];
curX = evt.x;
int i = evt.ind;
if (i < 0) {
arcs.erase(i);
arcs.erase(~i);
} else {
set<int, cmp>::iterator hi = arcs.lower_bound(i);
set<int, cmp>::iterator lo = hi;
if (hi == arcs.end() || lo == arcs.begin()) {
// root
} else {
--lo;
int ilo = realind(*lo);
int ihi = realind(*hi);
if (ilo == ihi) {
adj[ilo].push_back(i);
depth[i] = depth[ilo]+1;
par[i] = ilo;
} else {
if (depth[ilo] > depth[ihi]) swap(ilo, ihi);
adj[par[ihi]].push_back(i);
depth[i] = depth[par[ihi]]+1;
par[i] = par[ihi];
}
}
arcs.insert(i);
arcs.insert(~i);
}
}
return bool(dfs_grundy(0));
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
int T; cin >> T;
while (T--) {
cout << (go() ? "Alice" : "Bob") << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGRvdWJsZSBkYmw7Cgpjb25zdCBkYmwgRVBTID0gMWUtODsKaW50IHNnbihkYmwgYSkgeyByZXR1cm4gKGEgPiBFUFMpIC0gKGEgPCAtRVBTKTsgfQppbnQgc2duKGRibCBhLCBkYmwgYikgeyByZXR1cm4gc2duKGEtYik7IH0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIHNxKFQgYSkgeyByZXR1cm4gYSphOyB9Cgpjb25zdCBpbnQgTUFYTiA9IDIuMWU0OwoKaW50IGN1clg7CgpzdHJ1Y3QgY2lyY2xlIHsKICAgIGludCBhLCBiLCByOwoKICAgIGNpcmNsZSgpIHt9CgogICAgY2lyY2xlKGludCBhXywgaW50IGJfLCBpbnQgcl8pIDogYShhXyksIGIoYl8pLCByKHJfKSB7fQoKICAgIGRibCBnZXRfeShpbnQgdCkgewogICAgICAgIGRibCB5ID0gdCAqIHNxcnQoc3EocikgLSBzcShjdXJYLWEpKSArIGI7CiAgICAgICAgcmV0dXJuIHk7CiAgICB9Cn0gY2lyY3NbTUFYTl07CgpzdHJ1Y3QgZXZlbnQgewogICAgaW50IHgsIGluZDsKCiAgICBldmVudCgpIHt9CgogICAgZXZlbnQoaW50IHhfLCBpbnQgaW5kXykgOiB4KHhfKSwgaW5kKGluZF8pIHt9CgogICAgYm9vbCBvcGVyYXRvciA8IChjb25zdCBldmVudCYgbykgY29uc3QgewogICAgICAgIHJldHVybiBtYWtlX3BhaXIoeCwgaW5kKSA8IG1ha2VfcGFpcihvLngsIG8uaW5kKTsKICAgIH0KfTsKCmludCBzZ24oaW50IGkpIHsgcmV0dXJuIChpID49IDApIC0gKGkgPCAwKTsgfQppbnQgcmVhbGluZChpbnQgaSkgeyByZXR1cm4gbWF4KGksIH5pKTsgfQoKc3RydWN0IGNtcCB7CiAgICBib29sIG9wZXJhdG9yICgpIChpbnQgaSwgaW50IGopIGNvbnN0IHsKICAgICAgICBkYmwgeWkgPSBjaXJjc1tyZWFsaW5kKGkpXS5nZXRfeShzZ24oaSkpOwogICAgICAgIGRibCB5aiA9IGNpcmNzW3JlYWxpbmQoaildLmdldF95KHNnbihqKSk7CiAgICAgICAgaW50IHMgPSBzZ24oeWksIHlqKTsKICAgICAgICBpZiAocyA9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBpIDwgajsKICAgICAgICB9IGVsc2UgewoJCQlyZXR1cm4gcyA8IDA7CiAgICAgICAgfQogICAgfQp9OwoKdmVjdG9yPGludD4gYWRqW01BWE5dOwppbnQgZGVwdGhbTUFYTl07CmludCBwYXJbTUFYTl07CgppbnQgZGZzX2dydW5keShpbnQgY3VyKSB7CiAgICBpbnQgcmVzID0gMDsKICAgIGZvciAoaW50IHogPSAwOyB6IDwgaW50KGFkaltjdXJdLnNpemUoKSk7IHorKykgewogICAgICAgIGludCBueHQgPSBhZGpbY3VyXVt6XTsKICAgICAgICByZXMgXj0gZGZzX2dydW5keShueHQpKzE7CiAgICB9CiAgICByZXR1cm4gcmVzOwp9Cgpib29sIGdvKCkgewogICAgaW50IE47IGNpbiA+PiBOOwoKICAgIGNpcmNzWzBdID0gY2lyY2xlKDAsIDAsIGludCg0LjFlNCkpOwogICAgTisrOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBOOyBpKyspIHsKICAgICAgICBpbnQgYSwgYiwgcjsgY2luID4+IGEgPj4gYiA+PiByOwogICAgICAgIGNpcmNzW2ldID0gY2lyY2xlKGEsIGIsIHIpOwogICAgfQoKICAgIHZlY3RvcjxldmVudD4gZXZ0czsgZXZ0cy5yZXNlcnZlKDIqTik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIGludCBhID0gY2lyY3NbaV0uYTsKICAgICAgICBpbnQgciA9IGNpcmNzW2ldLnI7CiAgICAgICAgZXZ0cy5wdXNoX2JhY2soZXZlbnQoYS1yLCBpKSk7CiAgICAgICAgZXZ0cy5wdXNoX2JhY2soZXZlbnQoYStyLCB+aSkpOwogICAgfQogICAgc29ydChldnRzLmJlZ2luKCksIGV2dHMuZW5kKCkpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgYWRqW2ldLmNsZWFyKCk7CiAgICAgICAgZGVwdGhbaV0gPSAtMTsKICAgICAgICBwYXJbaV0gPSAtMTsKICAgIH0KICAgIGRlcHRoWzBdID0gMDsKCiAgICBzZXQ8aW50LCBjbXA+IGFyY3M7CiAgICBmb3IgKGludCB6ID0gMDsgeiA8IDIqTjsgeisrKSB7CiAgICAgICAgZXZlbnQmIGV2dCA9IGV2dHNbel07CiAgICAgICAgY3VyWCA9IGV2dC54OwogICAgICAgIGludCBpID0gZXZ0LmluZDsKCiAgICAgICAgaWYgKGkgPCAwKSB7CiAgICAgICAgICAgIGFyY3MuZXJhc2UoaSk7CiAgICAgICAgICAgIGFyY3MuZXJhc2UofmkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNldDxpbnQsIGNtcD46Oml0ZXJhdG9yIGhpID0gYXJjcy5sb3dlcl9ib3VuZChpKTsKICAgICAgICAgICAgc2V0PGludCwgY21wPjo6aXRlcmF0b3IgbG8gPSBoaTsKICAgICAgICAgICAgaWYgKGhpID09IGFyY3MuZW5kKCkgfHwgbG8gPT0gYXJjcy5iZWdpbigpKSB7CgkJCQkvLyByb290CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAtLWxvOwoKICAgICAgICAgICAgICAgIGludCBpbG8gPSByZWFsaW5kKCpsbyk7CiAgICAgICAgICAgICAgICBpbnQgaWhpID0gcmVhbGluZCgqaGkpOwogICAgICAgICAgICAgICAgaWYgKGlsbyA9PSBpaGkpIHsKICAgICAgICAgICAgICAgICAgICBhZGpbaWxvXS5wdXNoX2JhY2soaSk7CiAgICAgICAgICAgICAgICAgICAgZGVwdGhbaV0gPSBkZXB0aFtpbG9dKzE7CiAgICAgICAgICAgICAgICAgICAgcGFyW2ldID0gaWxvOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZGVwdGhbaWxvXSA+IGRlcHRoW2loaV0pIHN3YXAoaWxvLCBpaGkpOwoJCQkJCWFkaltwYXJbaWhpXV0ucHVzaF9iYWNrKGkpOwogICAgICAgICAgICAgICAgICAgIGRlcHRoW2ldID0gZGVwdGhbcGFyW2loaV1dKzE7CiAgICAgICAgICAgICAgICAgICAgcGFyW2ldID0gcGFyW2loaV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGFyY3MuaW5zZXJ0KGkpOwogICAgICAgICAgICBhcmNzLmluc2VydCh+aSk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBib29sKGRmc19ncnVuZHkoMCkpOwp9CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApLCBjaW4udGllKDApOwoKICAgIGludCBUOyBjaW4gPj4gVDsKICAgIHdoaWxlIChULS0pIHsKICAgICAgICBjb3V0IDw8IChnbygpID8gIkFsaWNlIiA6ICJCb2IiKSA8PCAnXG4nOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==