#include <iostream>
#include <cstdio>
#include <vector>
#include <complex>
#include <cmath>
#include <algorithm>
using namespace std;

// * XYテ・ツコツァテヲツィツ?
#define X real()
#define Y imag()

// * テァツつケテ」ツ?ョティツ。ツィテァツ渉セ
typedef complex<double> P;

// * ティツィツアテ・ツョツケテ」ツ?凖」ツつ凝ィツェツ、テ・ツキツョテ篠オ
const double EPS = 1e-10;
// * Infinity
const double INF = 1e12;
// * テ・ツ??・ツ堕ィテァツ篠?
const double PI = acos(-1.0);
// * Infinity 2
const P INF_P(INF,INF);

// * complex<double> テ」ツ?ョテゥツ??・ツコツ湘」ツつ津・ツョツ堙ァツセツゥテ」ツ?凖」ツつ?
namespace std {
	bool operator < (const P& a, const P& b) {
		return (real(a) != real(b))? real(a) < real(b) : imag(a) < imag(b);
	}
}

// * 2テ、ツケツ療」ツ?凖」ツつ?
double sq(double x) {
	return x * x;
}

// * 2テァツつケテゥツ鳴禿」ツ?ョティツキツ敕ゥツ崢「
double dist(P p1, P p2) {
	return abs(p1 - p2);
}

// * 2テ」ツ?、テ」ツ?ョテ」ツつケテ」ツつォテ」ツδゥテ」ツδシテ」ツ?古ァツュツ嘉」ツ?療」ツ??」ツ?凝」ツ?ゥテ」ツ??」ツ??
bool equal(double a, double b) {
	return ( fabs( a - b ) < EPS );
}
// * 2テ」ツ?、テ」ツ?ョテ」ツδ凖」ツつッテ」ツδ暗」ツδォテ」ツ?古ァツュツ嘉」ツ?療」ツ??」ツ?凝」ツ?ゥテ」ツ??」ツ??
bool eq_v(P a, P b) {
	return ( equal( a.X, b.X ) && equal( a.Y, b.Y ) );
}

// * テ・ツ??ァツゥツ?(dot product) : aテ」ツδサb = |a||b|cosテ篠?
double dot(P a, P b) {
	return real( conj(a) * b );
}

// * テ・ツ、ツ姪ァツゥツ?(cross product) : aテδ傭 = |a||b|sinテ篠?
double cross(P a, P b) {
	return imag( conj(a) * b ) ;
}

// テァツキツ堙・ツ按?」ツ?ョティツ。ツィテァツ渉セ
struct Segment{
	// テァツつケ a, b テ」ツつ津ァツォツッテァツつケテ」ツ?ィテ」ツ?凖」ツつ凝ァツキツ堙・ツ按?
	P a, b;
	// テ」ツつウテ」ツδウテ」ツつケテ」ツδ暗」ツδゥテ」ツつッテ」ツつソテ」ツ?ァテ・ツ按敕ヲツ慊淌・ツ個?
	Segment(P a_, P b_) {
		a = a_; b = b_;
	}
	// テァツつケ p テ」ツ?古ァツキツ堙・ツ按?、ツクツ甘」ツ?ォテ」ツ?づ」ツつ凝」ツ?凝」ツ?ゥテ」ツ??」ツ??
	bool contain(P p) { return (abs(a-p) + abs(p-b) < abs(a-b) + EPS); }
};
// Segment テ」ツ?ョテゥツ??・ツコツ湘」ツつ津・ツョツ堙ァツセツゥ (xテ・ツコツァテヲツィツ凖」ツ?ョテ・ツーツ湘」ツ?陛」ツ??ァツォツッテァツつケテ」ツ?ァテヲツッツ氾ィツシツ?
bool operator < (const Segment& s1, const Segment& s2) { return s1.a < s2.a; }

// テ、ツクツ嘉ィツァツ津・ツスツ「テ」ツ?ョティツ。ツィテァツ渉セ
struct Triangle{
private:
	// テ、ツスツ凖・ツシツヲテ・ツョツ堙ァツ青?」ツ?凝」ツつ?3 テ」ツ?、テ」ツ?ョティツァツ津」ツ?ョティツァツ津・ツコツヲテ」ツつ津ヲツアツづ」ツつ?」ツつ?(テ・ツ??ゥツδィテ」ツ?ョテゥツ鳴「テヲツ閉ーテ」ツ?ァテ、ツスツソテァツ板ィ)
    double law_of_cos(double a, double b, double c) {
        return acos( (b*b + c*c - a*a) / (2.0 * b * c) );
    }
public:
	// 3 テ」ツ?、テ」ツ?ョテゥツ?づァツつケ
	P a, b, c;
    // 3 テ」ツ?、テ」ツ?ョティツセツコテ」ツ?ョテゥツ閉キテ」ツ??
    double edgeA, edgeB, edgeC;
    // 3 テ」ツ?、テ」ツ?ョティツァツ津」ツ?ョティツァツ津・ツコツヲ (テ」ツδゥテ」ツつクテ」ツつ「テ」ツδウ)
    double angleA,angleB,angleC;
    
    // テ」ツつウテ」ツδウテ」ツつケテ」ツδ暗」ツδゥテ」ツつッテ」ツつソテ」ツ?ァテ・ツ按敕ヲツ慊淌・ツ個?
    Triangle(P p1, P p2, P p3) {
        a = p1;
        b = p2;
        c = p3;
        edgeB = abs(c-a);
        edgeA = abs(b-c);
        edgeC = abs(a-b);
        angleA = law_of_cos( edgeA, edgeB, edgeC );
        angleB = law_of_cos( edgeB, edgeC, edgeA );
        angleC = law_of_cos( edgeC, edgeA, edgeB );
    }
	// テァツつケ p テ」ツ?古、ツクツ嘉ィツァツ津・ツスツ「テ」ツ?ョティツセツコテ、ツクツ甘」ツ?ォテ」ツ?づ」ツつ凝」ツ?凝」ツ?ゥテ」ツ??」ツ??
	/*bool on_boundary(P p) {
		Segment AB(a,b), BC(b,c), CA(c,a);
		return (AB.contain( p ) || BC.contain( p ) || CA.contain( p ) );
	}*/
	// テァツつケ p テ」ツ?古、ツクツ嘉ィツァツ津・ツスツ「テ」ツ?ョテ・ツ??ゥツδィテ」ツ?ォテ」ツ?づ」ツつ凝」ツ?凝」ツ?ゥテ」ツ??」ツ??( AOJ 0012 テ」ツ?ァテヲツ、ツ愿ィツィツシテヲツクツ暗」ツ?ソ )
	// テァツつケ p テ」ツ?古、ツクツ嘉ィツァツ津・ツスツ「テ」ツ?ョティツセツコテ、ツクツ?or テゥツ?づァツつケテ、ツクツ?テ」ツ?ォテ」ツ?づ」ツつ凝」ツ?ィテ」ツ?催」ツ?ッティツェツ、テ・ツキツョテ」ツ?ァテヲツュツ」テ」ツ?療」ツ??ァツオツ静ヲツ楪愿」ツ?古ィツソツ氾」ツ?」テ」ツ?ヲテ」ツ?禿」ツ?ェテ」ツ??」ツ?ョテ」ツ?ァテヲツウツィテヲツ??!!
	bool is_inside(P p) {
		// ティツセツコテ、ツクツ甘」ツ?ォテ」ツ?づ」ツつ凝」ツ?ィテ」ツ??
		//if( this->on_boundary(p) ) return true;
		
		Triangle t1( a , b , p );
		Triangle t2( b , c , p );
		Triangle t3( c , a , p );
		// ティツァツ但PB + ティツァツ達PB + ティツァツ辰PA テ」ツ??360テ・ツコツヲテ」ツ?ェテ」ツつ?テァツつケ p テ」ツ?ッテ、ツクツ嘉ィツァツ津・ツスツ「テ」ツ?ョテ・ツ??ゥツδィテ」ツ?ォテ」ツ?づ」ツつ?
		return equal( t1.angleC + t2.angleC + t3.angleC , 2.0*PI );
	}
};

int main(){
	int n;
	cin >> n;
	for(int i=0 ; i < n ; i++ ){
		int xp1, yp1, xp2, yp2, xp3, yp3, xk, yk, xs, ys;
		cin >> xp1 >> yp1 >> xp2 >> yp2 >> xp3 >> yp3 >> xk >> yk >> xs >> ys;
		P p1(xp1,yp1), p2(xp2,yp2), p3(xp3,yp3), K(xk,yk), S(xs,ys);
		Triangle t( p1 , p2, p3 );
		int a = t.is_inside(K)? 1 : 0 ;
		int b = t.is_inside(S)?	1 : 0 ;
		cout << ((a^b)? "OK" : "NG") << endl;
	}
}

Measured memory_bytes: 1232