import std.stdio, std.conv; import std.algorithm, std.range, std.random; import std.string, std.array, std.container, std.bigint; import core.bitop; struct EG { long g, x, y; }; EG extGcd(long a, long b) { if (b==0) { return EG(a, 1, 0); } else { auto e = extGcd(b, a%b); return EG(e.g, e.y, e.x-a/b*e.y); } } struct ModInt(uint MD) { import std.conv : to; uint v; this(int v) {this.v = (v%MD+MD)%MD;} this(long v) {this.v = (v%MD+MD)%MD;} auto normS(uint x) {return (x>u); } iFac = new Mint[MN]; foreach (i; 0..MN) { iFac[i] = Mint.inv(fact[i]); } } int main() { int T; sc.read(T); foreach (caseNum; 0..T) { int A, B, C; sc.read(A, B, C); int check() { if (C % 2 == 0) { return 0; } int X = B+C-1; int Y = B; int two = p2c[X]-p2c[Y]-p2c[X-Y]; Mint up = fact[X]*iFac[Y]*iFac[X-Y]*Mint(C); int iup = cast(int)(cast(long)(up.v) << two % MD); iup = (iup + A-1) % MD; int idw = A; // writeln("XY ", X, " ", Y); // writeln("DB ", two, " ", iup, " ", idw); // writeln(~iup & idw); if (~iup & idw) { return 0; } return 1; } writeln(check()); } return 0; }