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
#include <cstdio>
#include <set>

const int MAXN = 101010;

using namespace std;

struct T {
	int h1, h2, w1, w2;
} a[MAXN];

int n;

int main() {
	// freopen("input.txt", "r", stdin);
	// freopen("output.txt", "w", stdout);
	int qwe;
	scanf("%d", &qwe);
	while (qwe--) {
		scanf("%d", &n);
		for (int i = 0; i < n; i++)
			scanf("%d%d%d%d", &a[i].h1, &a[i].h2, &a[i].w1, &a[i].w2);
		set<int> s;
		int min_height = a[0].h1;
		for (int i = 1; i < n; i++)
			if (min_height > a[i].h1)
				min_height = a[i].h1;
		// printf("min_height: %d\n", min_height);
		for (int i = 0; i < n; i++)
			if (a[i].h1 == min_height)
				s.insert(i);

		int max_height = a[0].h2;
		for (int i = 1; i < n; i++)
			if (max_height < a[i].h2)
				max_height = a[i].h2;
		// printf("max_height: %d\n", max_height);
		for (set<int>::iterator it = s.begin(); it != s.end(); it++)
			if (a[*it].h2 != max_height)
				s.erase(it);
		if (s.empty()) {
			printf("NIE\n");
			continue;
		}

		int min_width = a[0].w1;
		for (int i = 1; i < n; i++)
			if (min_width > a[i].w1)
				min_width = a[i].w1;
		// printf("min_width: %d\n", min_width);
		for (set<int>::iterator it = s.begin(); it != s.end(); it++)
			if (a[*it].w1 != min_width)
				s.erase(it);
		if (s.empty()) {
			printf("NIE\n");
			continue;
		}

		int max_width = a[0].w2;
		for (int i = 1; i < n; i++)
			if (max_width < a[i].w2)
				max_width = a[i].w2;
		// printf("max_width: %d\n", max_width);
		for (set<int>::iterator it = s.begin(); it != s.end(); it++)
			if (a[*it].w2 != max_width)
				s.erase(it);
		if (s.empty())
			printf("NIE\n");
		else
			printf("TAK\n");
	}
	return 0;
}