import java.io.*;
import java.util.*;
class CLMNTR{
static class Sphere{
int x, y, z, r;
Sphere(int a, int b, int c, int d){
x = a;
y = b;
z = c;
r = d;
}
static double getDist(Sphere a, Sphere b){
}
}
Scanner sc
= new Scanner
(System.
in); int T = sc.nextInt();
for(; T>0; T--){
Sphere s = new Sphere(sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt());
Sphere a = new Sphere(sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt());
Sphere b = new Sphere(sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt());
if(check(s, a, b))
else
}
}
static boolean check(Sphere s, Sphere a, Sphere b){
// Scale to 2d with star at (0,0), body A on +ve Y-axis at (0,sa), body B at (bx,by)
double sa = Sphere.getDist(s, a);
double sb = Sphere.getDist(s, b);
double ab = Sphere.getDist(a, b);
double by = (sa*sa-ab*ab+sb*sb)/(2*sa);
double bx
= Math.
sqrt(sb
*sb
-by
*by
); // If B is under X axis or B is closer to S than A no way there is eclipse
if(by<0 || sb<sa)
return false;
// B always lies in the first quadrant!!
// Exceptional case when star radius = radius of A, tangent is vertical
if(s.r==a.r)
if(bx<s.r || b.x-s.r<b.r)
return true;
else
return false;
// Find the external tangent y = mx+c
// Internal tangent c = s.r*s.a/(s.r+a.r)
double c = s.r*sa/(s.r-a.r);
double m
= Math.
sqrt((c
*c
/s.
r/s.
r)-1); // If A is smaller than star, c is +ve and we need tangent with -ve slope
if(c>0)
m = -m;
// If A is smaller than star, this check eliminates false +ves from antumbra cases
if(c>0 && c<sb-b.r)
return false;
// Then B surely lies between tangent and Y-axis
double lx = (by-c)/m;
if(bx<lx)
return true;
// If dist from tangent < radius then body intersects tangent
double d
= Math.
abs(m
*bx
-by
+c
)/Math.
sqrt(m
*m
+1); if(d<b.r)
return true;
return false;
}
}
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudXRpbC4qOwpjbGFzcyBDTE1OVFJ7CiAgICBzdGF0aWMgY2xhc3MgU3BoZXJlewogICAgICAgIGludCB4LCB5LCB6LCByOwogICAgICAgIFNwaGVyZShpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZCl7CiAgICAgICAgICAgIHggPSBhOwogICAgICAgICAgICB5ID0gYjsKICAgICAgICAgICAgeiA9IGM7CiAgICAgICAgICAgIHIgPSBkOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIGRvdWJsZSBnZXREaXN0KFNwaGVyZSBhLCBTcGhlcmUgYil7CiAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coYS54LWIueCwyKStNYXRoLnBvdyhhLnktYi55LDIpK01hdGgucG93KGEuei1iLnosMikpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKXRocm93cyBFeGNlcHRpb257CiAgICAgICAgU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgaW50IFQgPSBzYy5uZXh0SW50KCk7CiAgICAgICAgZm9yKDsgVD4wOyBULS0pewogICAgICAgICAgICBTcGhlcmUgcyA9IG5ldyBTcGhlcmUoc2MubmV4dEludCgpLCBzYy5uZXh0SW50KCksIHNjLm5leHRJbnQoKSwgc2MubmV4dEludCgpKTsKICAgICAgICAgICAgU3BoZXJlIGEgPSBuZXcgU3BoZXJlKHNjLm5leHRJbnQoKSwgc2MubmV4dEludCgpLCBzYy5uZXh0SW50KCksIHNjLm5leHRJbnQoKSk7CiAgICAgICAgICAgIFNwaGVyZSBiID0gbmV3IFNwaGVyZShzYy5uZXh0SW50KCksIHNjLm5leHRJbnQoKSwgc2MubmV4dEludCgpLCBzYy5uZXh0SW50KCkpOwoKICAgICAgICAgICAgaWYoY2hlY2socywgYSwgYikpCiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlllcyIpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5vIik7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBib29sZWFuIGNoZWNrKFNwaGVyZSBzLCBTcGhlcmUgYSwgU3BoZXJlIGIpewogICAgICAgIC8vIFNjYWxlIHRvIDJkIHdpdGggc3RhciBhdCAoMCwwKSwgYm9keSBBIG9uICt2ZSBZLWF4aXMgYXQgKDAsc2EpLCBib2R5IEIgYXQgKGJ4LGJ5KQogICAgICAgIGRvdWJsZSBzYSA9IFNwaGVyZS5nZXREaXN0KHMsIGEpOwogICAgICAgIGRvdWJsZSBzYiA9IFNwaGVyZS5nZXREaXN0KHMsIGIpOwogICAgICAgIGRvdWJsZSBhYiA9IFNwaGVyZS5nZXREaXN0KGEsIGIpOwogICAgICAgIGRvdWJsZSBieSA9IChzYSpzYS1hYiphYitzYipzYikvKDIqc2EpOwogICAgICAgIGRvdWJsZSBieCA9IE1hdGguc3FydChzYipzYi1ieSpieSk7CiAgICAgICAgLy8gSWYgQiBpcyB1bmRlciBYIGF4aXMgb3IgQiBpcyBjbG9zZXIgdG8gUyB0aGFuIEEgbm8gd2F5IHRoZXJlIGlzIGVjbGlwc2UKICAgICAgICBpZihieTwwIHx8IHNiPHNhKQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgLy8gQiBhbHdheXMgbGllcyBpbiB0aGUgZmlyc3QgcXVhZHJhbnQhIQoKICAgICAgICAvLyBFeGNlcHRpb25hbCBjYXNlIHdoZW4gc3RhciByYWRpdXMgPSByYWRpdXMgb2YgQSwgdGFuZ2VudCBpcyB2ZXJ0aWNhbAogICAgICAgIGlmKHMucj09YS5yKQogICAgICAgICAgICBpZihieDxzLnIgfHwgYi54LXMucjxiLnIpCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIAogICAgICAgIC8vIEZpbmQgdGhlIGV4dGVybmFsIHRhbmdlbnQgeSA9IG14K2MKICAgICAgICAvLyBJbnRlcm5hbCB0YW5nZW50IGMgPSBzLnIqcy5hLyhzLnIrYS5yKQogICAgICAgIGRvdWJsZSBjID0gcy5yKnNhLyhzLnItYS5yKTsKICAgICAgICBkb3VibGUgbSA9IE1hdGguc3FydCgoYypjL3Muci9zLnIpLTEpOwogICAgICAgIC8vIElmIEEgaXMgc21hbGxlciB0aGFuIHN0YXIsIGMgaXMgK3ZlIGFuZCB3ZSBuZWVkIHRhbmdlbnQgd2l0aCAtdmUgc2xvcGUKICAgICAgICBpZihjPjApCiAgICAgICAgICAgIG0gPSAtbTsKCiAgICAgICAgLy8gSWYgQSBpcyBzbWFsbGVyIHRoYW4gc3RhciwgdGhpcyBjaGVjayBlbGltaW5hdGVzIGZhbHNlICt2ZXMgZnJvbSBhbnR1bWJyYSBjYXNlcwogICAgICAgIGlmKGM+MCAmJiBjPHNiLWIucikKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICAvLyBUaGVuIEIgc3VyZWx5IGxpZXMgYmV0d2VlbiB0YW5nZW50IGFuZCBZLWF4aXMKICAgICAgICBkb3VibGUgbHggPSAoYnktYykvbTsKICAgICAgICBpZihieDxseCkKICAgICAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICAgIC8vIElmIGRpc3QgZnJvbSB0YW5nZW50IDwgcmFkaXVzIHRoZW4gYm9keSBpbnRlcnNlY3RzIHRhbmdlbnQKICAgICAgICBkb3VibGUgZCA9IE1hdGguYWJzKG0qYngtYnkrYykvTWF0aC5zcXJ0KG0qbSsxKTsKICAgICAgICBpZihkPGIucikKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9