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
#include <cstdio>
#include <algorithm>
using namespace std;

struct str
{
	int w1,w2,h1,h2;
	str(int a=0, int b=0, int c=0, int d=0): w1(a), w2(b), h1(c), h2(d){}
}tab[100003];

bool cmpw(str a, str b)
{
	return (a.w1==b.w1)? a.w2>b.w2 : a.w1<b.w1;
}

bool cmph(str a, str b)
{
	if(a.h1==b.h1)
	{
		if(a.h2==b.h2) return (a.w1==b.w1)? a.w2>b.w2 : a.w1<b.w1;
		else return a.h2>b.h2;
	}
	return a.h1<b.h1;
}

int z,n,a,b,c,d;

void Solve()
{
	scanf("%d", &n);
		for(int i=0; i<n; i++)
		{
			scanf("%d%d%d%d", &a,&b,&c,&d);
			tab[i]=str(a,b,c,d);
		}
		
		sort(tab,tab+n, cmpw);
		for(int i=1; i<n; i++)
			if(tab[i].w2>tab[0].w2)
			{
				printf("NIE\n");
				return;
			}
		int tmpw1=tab[0].w1, tmpw2=tab[0].w2;
		
		sort(tab, tab+n, cmph);
		for(int i=1; i<n; i++)
			if(tab[i].h2>tab[0].h2)
			{
				printf("NIE\n");
				return;
			}
		
		if(tab[0].w1==tmpw1 && tab[0].w2==tmpw2) printf("TAK\n"); else printf("NIE\n");
		
}
int main()
{
	scanf("%d", &z);
	
	while(z--)
	{
		Solve();
	}
}