#include <vector>
#include <algorithm>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <cstring>
#include <deque>
#include <cstdio>
#include <cmath>
#include <complex>

using namespace std;

#define reep(i,f,t) for(int i=f ; i<int(t) ; ++i)
#define rep(i,n) reep(i, 0, n) 

typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pii;

const double EPS = 1e-8;
const double INF = 1e12;

// ½ÊãÌ_ExNg
typedef complex<double> P;
namespace std{
	bool operator< (const P& a, const P& b){
		return real(a) != real(b) ? real(a) < real(b) : imag(a) < imag(b);
	}
}

// OÏ
double cross(const P& a, const P& b){
	return imag(conj(a)*b);
}

// àÏ
double dot(const P& a, const P& b){
	return real(conj(a)*b);
}

// ¼ü
struct L : public vector<P> {
	L(const P &a, const P &b){
		push_back(a);
		push_back(b);
	}
};

// ½p`
typedef vector<P> G;

// ~
struct C{
	P p;
	double r;
	C(const P& p, double r) : p(p), r(r) {}
};

int ccw(P a, P b, P c)
{
	b -= a;
	c -= a;
	if(cross(b, c) > 0)   return +1; // ½vñè
	if(cross(b, c) < 0)   return -1; // vñè
	if(dot(b, c) < 0)     return +2; // c--a--b
	if(norm(b) < norm(c)) return -2; // a--b--c
	return 0;
}

int main()
{
	int n;
	scanf("%d", &n);
	rep(i, n){
		P p[5];
		rep(j, 5)
			scanf("%lf%lf", &p[j].real(), &p[j].imag());
		
		bool ok = true;
		rep(j, 2){
			int ans;
			rep(k, 3){
				int tmp = ccw(p[k], p[(k+1)%3], p[3+j]);
				if(!k)
					ans = tmp;
				else if(ans*tmp < 0){
					ok = !ok;
					break;
				}
			}
		}
		
		puts(ok ? "NG" : "OK");
	}
	
	return 0;
}