#include<iostream>
#include<complex>
using namespace std;
typedef complex<double> point;
#define vec(a,b) (b)-(a)
#define dot(a,b) (conj(a)*(b)).real()
#define cross(a,b) (conj(a)*(b)).imag()
#define lensqr(a) dot(a,a)
#define EPS 1e-9
double N, xstr, ystr, xend, yend, xtopLeft, ytopLeft, xbottomRight, ybottomRight;
bool Lines_intersect(const point &a, const point &b, const point &p, const point &q, point &ret) {
double d1 = cross(vec(a,p),vec(a,b)),
d2 = cross(vec(a,q),vec(a,b));
ret = (d1 * q - d2 * p) / (d1 - d2);
return fabs(d1 - d2) > EPS;
}
bool pointOnRay(const point &a, const point &b, const point &p) {
return cross(vec(a,b),vec(a,p)) < EPS
&& cross(vec(a,b),vec(a,p)) > -EPS
&& dot(vec(a,b),vec(a,p)) > -EPS;
}
bool pointOnSegment(const point &a, const point &b, const point &p) {
if (lensqr(vec(a,b)) < EPS)
return lensqr(vec(a,p)) < EPS;
return pointOnRay(a, b, p) && pointOnRay(b, a, p);
}
int main() {
cin >> N;
point ret;
while (N--) {
cin >> xstr >> ystr >> xend >> yend >> xtopLeft >> ytopLeft >> xbottomRight >> ybottomRight;
if (Lines_intersect(point(xstr, ystr), point(xend, yend), point(xtopLeft, ytopLeft), point(xtopLeft, ybottomRight), ret)
&& pointOnSegment(point(xstr, ystr), point(xend, yend), ret)
&& pointOnSegment(point(xtopLeft, ytopLeft), point(xtopLeft, ybottomRight), ret)) {
cout << "T" << endl;
continue;
}
if (Lines_intersect(point(xstr, ystr), point(xend, yend), point(xtopLeft, ytopLeft), point(xbottomRight, ytopLeft), ret)
&& pointOnSegment(point(xstr, ystr), point(xend, yend), ret)
&& pointOnSegment(point(xtopLeft, ytopLeft), point(xbottomRight, ytopLeft), ret)) {
cout << "T" << endl;
continue;
}
if (Lines_intersect(point(xstr, ystr), point(xend, yend), point(xbottomRight, ytopLeft), point(xbottomRight, ybottomRight), ret)
&& pointOnSegment(point(xstr, ystr), point(xend, yend), ret)
&& pointOnSegment(point(xbottomRight, ytopLeft), point(xbottomRight, ybottomRight), ret)) {
cout << "T" << endl;
continue;
}
if (Lines_intersect(point(xstr, ystr), point(xend, yend), point(xtopLeft, ybottomRight), point(xbottomRight, ybottomRight), ret)
&& pointOnSegment(point(xstr, ystr), point(xend, yend), ret)
&& pointOnSegment(point(xtopLeft, ybottomRight), point(xbottomRight, ybottomRight), ret)) {
cout << "T" << endl;
continue;
}
if (xstr <= (xtopLeft > xbottomRight ? xtopLeft : xbottomRight)
&& xstr >= (xtopLeft < xbottomRight ? xtopLeft : xbottomRight)
&& ystr <= (ytopLeft > ybottomRight ? ytopLeft : ybottomRight)
&& ystr >= (ytopLeft < ybottomRight ? ytopLeft : ybottomRight)) {
cout << "T" << endl;
continue;
}
cout << "F" << endl;
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNvbXBsZXg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGNvbXBsZXg8ZG91YmxlPiBwb2ludDsKCiNkZWZpbmUgdmVjKGEsYikgKGIpLShhKQojZGVmaW5lIGRvdChhLGIpIChjb25qKGEpKihiKSkucmVhbCgpCiNkZWZpbmUgY3Jvc3MoYSxiKSAoY29uaihhKSooYikpLmltYWcoKQojZGVmaW5lIGxlbnNxcihhKSBkb3QoYSxhKQojZGVmaW5lIEVQUyAxZS05Cgpkb3VibGUgTiwgeHN0ciwgeXN0ciwgeGVuZCwgeWVuZCwgeHRvcExlZnQsIHl0b3BMZWZ0LCB4Ym90dG9tUmlnaHQsIHlib3R0b21SaWdodDsKCmJvb2wgTGluZXNfaW50ZXJzZWN0KGNvbnN0IHBvaW50ICZhLCBjb25zdCBwb2ludCAmYiwgY29uc3QgcG9pbnQgJnAsIGNvbnN0IHBvaW50ICZxLCBwb2ludCAmcmV0KSB7Cglkb3VibGUgZDEgPSBjcm9zcyh2ZWMoYSxwKSx2ZWMoYSxiKSksCgkJCWQyID0gY3Jvc3ModmVjKGEscSksdmVjKGEsYikpOwoJcmV0ID0gKGQxICogcSAtIGQyICogcCkgLyAoZDEgLSBkMik7CglyZXR1cm4gZmFicyhkMSAtIGQyKSA+IEVQUzsKfQoKYm9vbCBwb2ludE9uUmF5KGNvbnN0IHBvaW50ICZhLCBjb25zdCBwb2ludCAmYiwgY29uc3QgcG9pbnQgJnApIHsKCXJldHVybiBjcm9zcyh2ZWMoYSxiKSx2ZWMoYSxwKSkgPCBFUFMKCQkJJiYgY3Jvc3ModmVjKGEsYiksdmVjKGEscCkpID4gLUVQUwoJCQkmJiBkb3QodmVjKGEsYiksdmVjKGEscCkpID4gLUVQUzsKfQoKYm9vbCBwb2ludE9uU2VnbWVudChjb25zdCBwb2ludCAmYSwgY29uc3QgcG9pbnQgJmIsIGNvbnN0IHBvaW50ICZwKSB7CglpZiAobGVuc3FyKHZlYyhhLGIpKSA8IEVQUykKCQlyZXR1cm4gbGVuc3FyKHZlYyhhLHApKSA8IEVQUzsKCXJldHVybiBwb2ludE9uUmF5KGEsIGIsIHApICYmIHBvaW50T25SYXkoYiwgYSwgcCk7Cn0KCmludCBtYWluKCkgewoJY2luID4+IE47Cglwb2ludCByZXQ7Cgl3aGlsZSAoTi0tKSB7CgkJY2luID4+IHhzdHIgPj4geXN0ciA+PiB4ZW5kID4+IHllbmQgPj4geHRvcExlZnQgPj4geXRvcExlZnQgPj4geGJvdHRvbVJpZ2h0ID4+IHlib3R0b21SaWdodDsKCgkJaWYgKExpbmVzX2ludGVyc2VjdChwb2ludCh4c3RyLCB5c3RyKSwgcG9pbnQoeGVuZCwgeWVuZCksIHBvaW50KHh0b3BMZWZ0LCB5dG9wTGVmdCksIHBvaW50KHh0b3BMZWZ0LCB5Ym90dG9tUmlnaHQpLCByZXQpCgkJCQkmJiBwb2ludE9uU2VnbWVudChwb2ludCh4c3RyLCB5c3RyKSwgcG9pbnQoeGVuZCwgeWVuZCksIHJldCkKCQkJCSYmIHBvaW50T25TZWdtZW50KHBvaW50KHh0b3BMZWZ0LCB5dG9wTGVmdCksIHBvaW50KHh0b3BMZWZ0LCB5Ym90dG9tUmlnaHQpLCByZXQpKSB7CgkJCWNvdXQgPDwgIlQiIDw8IGVuZGw7CgkJCWNvbnRpbnVlOwoJCX0KCgkJaWYgKExpbmVzX2ludGVyc2VjdChwb2ludCh4c3RyLCB5c3RyKSwgcG9pbnQoeGVuZCwgeWVuZCksIHBvaW50KHh0b3BMZWZ0LCB5dG9wTGVmdCksIHBvaW50KHhib3R0b21SaWdodCwgeXRvcExlZnQpLCByZXQpCgkJCQkmJiBwb2ludE9uU2VnbWVudChwb2ludCh4c3RyLCB5c3RyKSwgcG9pbnQoeGVuZCwgeWVuZCksIHJldCkKCQkJCSYmIHBvaW50T25TZWdtZW50KHBvaW50KHh0b3BMZWZ0LCB5dG9wTGVmdCksIHBvaW50KHhib3R0b21SaWdodCwgeXRvcExlZnQpLCByZXQpKSB7CgkJCWNvdXQgPDwgIlQiIDw8IGVuZGw7CgkJCWNvbnRpbnVlOwoJCX0KCgkJaWYgKExpbmVzX2ludGVyc2VjdChwb2ludCh4c3RyLCB5c3RyKSwgcG9pbnQoeGVuZCwgeWVuZCksIHBvaW50KHhib3R0b21SaWdodCwgeXRvcExlZnQpLCBwb2ludCh4Ym90dG9tUmlnaHQsIHlib3R0b21SaWdodCksIHJldCkKCQkJCSYmIHBvaW50T25TZWdtZW50KHBvaW50KHhzdHIsIHlzdHIpLCBwb2ludCh4ZW5kLCB5ZW5kKSwgcmV0KQoJCQkJJiYgcG9pbnRPblNlZ21lbnQocG9pbnQoeGJvdHRvbVJpZ2h0LCB5dG9wTGVmdCksIHBvaW50KHhib3R0b21SaWdodCwgeWJvdHRvbVJpZ2h0KSwgcmV0KSkgewoJCQljb3V0IDw8ICJUIiA8PCBlbmRsOwoJCQljb250aW51ZTsKCQl9CgoJCWlmIChMaW5lc19pbnRlcnNlY3QocG9pbnQoeHN0ciwgeXN0ciksIHBvaW50KHhlbmQsIHllbmQpLCBwb2ludCh4dG9wTGVmdCwgeWJvdHRvbVJpZ2h0KSwgcG9pbnQoeGJvdHRvbVJpZ2h0LCB5Ym90dG9tUmlnaHQpLCByZXQpCgkJCQkmJiBwb2ludE9uU2VnbWVudChwb2ludCh4c3RyLCB5c3RyKSwgcG9pbnQoeGVuZCwgeWVuZCksIHJldCkKCQkJCSYmIHBvaW50T25TZWdtZW50KHBvaW50KHh0b3BMZWZ0LCB5Ym90dG9tUmlnaHQpLCBwb2ludCh4Ym90dG9tUmlnaHQsIHlib3R0b21SaWdodCksIHJldCkpIHsKCQkJY291dCA8PCAiVCIgPDwgZW5kbDsKCQkJY29udGludWU7CgkJfQoKCQlpZiAoeHN0ciA8PSAoeHRvcExlZnQgPiB4Ym90dG9tUmlnaHQgPyB4dG9wTGVmdCA6IHhib3R0b21SaWdodCkKCQkJCSYmIHhzdHIgPj0gKHh0b3BMZWZ0IDwgeGJvdHRvbVJpZ2h0ID8geHRvcExlZnQgOiB4Ym90dG9tUmlnaHQpCgkJCQkmJiB5c3RyIDw9ICh5dG9wTGVmdCA+IHlib3R0b21SaWdodCA/IHl0b3BMZWZ0IDogeWJvdHRvbVJpZ2h0KQoJCQkJJiYgeXN0ciA+PSAoeXRvcExlZnQgPCB5Ym90dG9tUmlnaHQgPyB5dG9wTGVmdCA6IHlib3R0b21SaWdodCkpIHsKCQkJY291dCA8PCAiVCIgPDwgZW5kbDsKCQkJY29udGludWU7CgkJfQoJCWNvdXQgPDwgIkYiIDw8IGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==