program horsey;
var T, test:integer;
N,M,H,W : int64;
ans : string[4];
Procedure scambia (var a,b: Int64);
var x:Int64;
begin
x:=a;
a:=b;
b:=x;
end;
function MCD (a ,b :int64): int64;
VAR
resto: integer;
BEGIN
REPEAT
resto := a MOD b;
a := b;
b := resto
UNTIL resto = 0;
MCD:=a;
END;
begin
readln(T);
for test:=1 to T do
begin
readln(N,M,H,W);
if N<M then scambia(N,M);
if H<W then scambia (H,W);
if ((H+W) mod 2 =0) or (MCD(H,W)<>1) then ans:='NO'
else if (M<H+W) or (N<(2*H)) then ans:='NO'
else ans:='YES';
writeln(ans);
end;
end.
cHJvZ3JhbSBob3JzZXk7CnZhciBULCB0ZXN0OmludGVnZXI7CiAgICBOLE0sSCxXIDogaW50NjQ7CiAgICBhbnMgOiBzdHJpbmdbNF07ClByb2NlZHVyZSBzY2FtYmlhICh2YXIgYSxiOiBJbnQ2NCk7CnZhciB4OkludDY0OwpiZWdpbgogICB4Oj1hOwogICBhOj1iOwogICBiOj14OwplbmQ7CgpmdW5jdGlvbiBNQ0QgKGEgLGIgOmludDY0KTogaW50NjQ7ClZBUgogICByZXN0bzogaW50ZWdlcjsKCkJFR0lOCiAgIFJFUEVBVAogICAgICByZXN0byA6PSBhIE1PRCBiOwogICAgICBhIDo9IGI7CiAgICAgIGIgOj0gcmVzdG8KICAgVU5USUwgcmVzdG8gPSAwOwogICBNQ0Q6PWE7CkVORDsKCmJlZ2luCglyZWFkbG4oVCk7Cglmb3IgdGVzdDo9MSB0byBUIGRvCgkgICAgICBiZWdpbgoJICAgICAgICByZWFkbG4oTixNLEgsVyk7CgkgICAgICAgIGlmIE48TSB0aGVuIHNjYW1iaWEoTixNKTsKCSAgICAgICAgaWYgSDxXIHRoZW4gc2NhbWJpYSAoSCxXKTsKCSAgICAgICAgCgkgICAgICAgIGlmICgoSCtXKSBtb2QgMiA9MCkgb3IgKE1DRChILFcpPD4xKSB0aGVuIGFuczo9J05PJwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoTTxIK1cpIG9yIChOPCgyKkgpKSB0aGVuIGFuczo9J05PJwoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGFuczo9J1lFUyc7CiAgICAgICAgICAgd3JpdGVsbihhbnMpOyAgCiAgICAgICAgICBlbmQ7CmVuZC4=