1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <sstream>
#include <set>
#include <map>
#include <vector>
#include <list>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <string>
#include <queue>
#include <bitset>		//UWAGA - w czasie kompilacji musi byc znany rozmiar wektora - nie mozna go zmienic
#include <cassert>
#include <iomanip>		//do setprecision
#include <ctime>
#include <complex>
using namespace std;

#define FOR(i,b,e) for(int i=(b);i<(e);++i)
#define FORQ(i,b,e) for(int i=(b);i<=(e);++i)
#define FORD(i,b,e) for(int i=(b)-1;i>=(e);--i)
#define REP(x, n) for(int x = 0; x < (n); ++x)

#define ST first
#define ND second
#define PB push_back
#define MP make_pair
#define LL long long
#define ULL unsigned LL
#define LD long double

const double pi = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342;
const int inf = 2000000000;

#define MR 100010

pair < pair < int, int >, pair < int, int > > t[MR];

int main()
{
	int T;
	scanf("%d", &T);
	REP(i,T)
	{
		int n;
		scanf("%d", &n);
		int mnw = inf, mxw = -inf, mnh = inf, mxh = -inf;
		REP(i,n)
		{
			scanf("%d%d%d%d", &t[i].ST.ST, &t[i].ST.ND, &t[i].ND.ST, &t[i].ND.ND);
			mnw = min(mnw, t[i].ST.ST);
			mxw = max(mxw, t[i].ST.ND);
			mnh = min(mnh, t[i].ND.ST);
			mxh = max(mxh, t[i].ND.ND);
		}
		bool jest = 0;
		REP(i,n)
			if(mnw == t[i].ST.ST && mxw == t[i].ST.ND && mnh == t[i].ND.ST && mxh == t[i].ND.ND)
			{
				jest = 1;
				break;
			}
		if(jest) printf("TAK\n"); else printf("NIE\n");
	}
	return 0;
}