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
70
71
72
73
74
75
#include <cstdio>
#include <algorithm>
using namespace std;

const int MAX = 100005;
const int INF = 1000000005;

struct lus
{
	int w1, w2;
	int h1, h2;
	
	void scan()
	{
		scanf("%d%d%d%d", &w1, &w2, &h1, &h2);
	}
};

bool operator==(lus a, lus b)
{
	if ( a.w1==b.w1 && a.w2==b.w2 && a.h1==b.h1 && a.h2==b.h2 ) return 1;
	return 0;
}

lus t[MAX];
lus maj;

void update(int k)
{
	maj.w1=min(maj.w1, t[k].w1);
	maj.w2=max(maj.w2, t[k].w2);
	maj.h1=min(maj.h1, t[k].h1);
	maj.h2=max(maj.h2, t[k].h2);
}

int main()
{
	int m, n;
	bool vic;
	scanf("%d", &m);
	for (int it=0; it<m; it++)
	{
		scanf("%d", &n);
		
		maj.w1=INF;
		maj.w2=0;
		maj.h1=INF;
		maj.h2=0;
		
		for (int i=0; i<n; i++)
		{
			t[i].scan();
			update(i);
		}
		
		vic=0;
		
		for (int i=0; i<n; i++)
		{
			if (t[i]==maj)
			{
				vic=1;
				break;
			}
		}
		
		if (vic)
			printf("TAK\n");
		else
			printf("NIE\n");
	}
	
	//printf("%d %d %d %d\n", maj.w1, maj.w2, maj.h1, maj.h2);
	return 0;
}