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
76
77
78
79
80
81
82
#include<algorithm>
#include<iostream>
#include<vector>

struct Interval
{
	unsigned a, b;

	Interval(unsigned a, unsigned b): a(a), b(b) {}

	bool operator<(const Interval &i) const
	{
		return (i.a < a && b <= i.b) || (i.a <= a && b < i.b);
	}

	bool operator<=(const Interval &i) const
	{
		return i.a <= a && b <= i.b;
	}
};

struct Mirror
{
	Interval w, h;

	Mirror(unsigned a, unsigned b, unsigned c, unsigned d): w(a, b), h(c, d) {}

	bool operator<(const Mirror &m) const
	{
		return (w < m.w && h <= m.h) || (w <= m.w && h < m.h);
	}

	bool operator<=(const Mirror &m) const
	{
		return w <= m.w && h <= m.h;
	}
};

bool check(const std::vector<Mirror> &v)
{
	const Mirror *c = &v.front();
	for(const Mirror &i: v)
		if(*c < i)
			c = &i;

	for(const Mirror &i: v)
		if(!(i <= *c))
			return false;

	return true;
}

int main()
{
	std::ios_base::sync_with_stdio(false);

	unsigned t;
	std::cin >> t;

	while(t--)
	{
		unsigned n;
		std::cin >> n;

		std::vector<Mirror> v;
		v.reserve(n);
	
		for(unsigned i = 0; i < n; ++i)
		{
			unsigned a, b, c, d;
			std::cin >> a >> b >> c >> d;
			v.emplace_back(a, b, c, d);
		}

		if(check(v))
			std::cout << "TAK" << std::endl;
		else
			std::cout << "NIE" << std::endl;
	}

	return 0;
}