#include<stdio.h>#include<stdlib.h>#include<math.h>#define eps 1e-8#define zero(x) (((x)>0?(x):-(x))<eps)struct point{double x,y;};struct line{point a,b;};double xmult(point p1,point p2,point p0){return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);}int dot_online_in(point p,line l){return zero(xmult(p,l.a,l.b))&&(l.a.x-p.x)*(l.b.x-p.x)<eps&&(l.a.y-p.y)*(l.b.y-p.y)<eps;}int same_side(point p1,point p2,line l){return xmult(l.a,p1,l.b)*xmult(l.a,p2,l.b)>eps;}int dots_inline(point p1,point p2,point p3){return zero(xmult(p1,p2,p3));}int intersect_in(line u,line v){if (!dots_inline(u.a,u.b,v.a)||!dots_inline(u.a,u.b,v.b))return !same_side(u.a,u.b,v)&&!same_side(v.a,v.b,u);return dot_online_in(u.a,v)||dot_online_in(u.b,v)||dot_online_in(v.a,u)||dot_online_in(v.b,u);}int main(){ int n; scanf("%d",&n); double xstart,ystart,xend,yend,xleft,ytop,xright,ybottom; while(n--){ scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&xstart,&ystart,&xend,¥d,&xleft,&ytop,&xright,&ybottom); //并不一定能够保证xleft<xright&&ytop>ybottom if(xleft>xright){double tmp=xleft;xleft=xright;xright=tmp;} if(ytop<ybottom){double tmp=ytop;ytop=ybottom;ybottom=tmp;} if(xstart>=xleft&&xstart<=xright&&ystart>=ybottom&&ystart<=ytop&&xend>=xleft&&xend<=xright&¥d>=ybottom&¥d<=ytop) printf("T\n"); else{ point p1,p2,p3,p4,p5,p6; p1.x=xleft,p1.y=ytop; p2.x=xright,p2.y=ytop; p3.x=xright,p3.y=ybottom; p4.x=xleft,p4.y=ybottom; p5.x=xstart,p5.y=ystart; p6.x=xend,p6.y=yend; line l1,l2,l3,l4,l5; l1.a=p1,l1.b=p2; l2.a=p2,l2.b=p3; l3.a=p3,l3.b=p4; l4.a=p4,l4.b=p1; l5.a=p5,l5.b=p6; if(intersect_in(l1,l5)||intersect_in(l2,l5)||intersect_in(l3,l5)||intersect_in(l4,l5)) printf("T\n"); else printf("F\n"); } } //system("pause"); return 0;}