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
83
84
85
86
87
88
89
90
#include <iostream>

using namespace std;

bool sprawdzUjemne(int* tab, int n, int mi) {
	for (int i = 0; i < n; ++i) {
		if ((tab[i] - mi) < 0) {
			return false;
		}
	}
	return true;
}

bool sprawdz(int *tab, int n, int mi, int ma) {
	for (int i = 0; i < n; ++i) {
		if (tab[i] < mi) {
			return false;
		}
		if (tab[i] > ma) {
			return false;
		}
	}
	return true;
}

int mini(int *tab, int n) {
	int mi = INT32_MAX;
	for (int i = 0; i < n; ++i) {
		if (tab[i] < mi) {
			mi = tab[i];
		}
	}
	return mi;
}

int maksi(int *tab, int n) {
	int ma = INT32_MIN;
	for (int i = 0; i < n; ++i) {
		if (tab[i] > ma) {
			ma = tab[i];
		}
	}
	return ma;
}

bool sprawdzSumy(int *l, int* a, int* b, int n) {
	unsigned long long suma_a = 0;
	unsigned long long suma_b = 0;
	for (int i = 0; i < n; ++i) {
		suma_a += (l[i] * a[i]);
		suma_b += (l[i] * b[i]);
	}
	if (suma_a == suma_b) {
		return true;
	}
	return false;
}

int main()
{
	int t;
	cin >> t;
	for (int j = 0; j < t; ++j) {
		int n;
		cin >> n;
		int *l = new int[n];
		int *a = new int[n];
		int *b = new int[n];
		for (int i = 0; i < n; ++i) {
			cin >> l[i] >> a[i] >> b[i];
		}
		if (sprawdzSumy(l, a, b, n) == false) {
			cout << "NIE\n";
		}
		else {
			if (sprawdz(b, n, mini(a, n), maksi(a, n)) == false) {
				cout << "NIE\n";
			}
			else {
				if (sprawdzUjemne(b, n, mini(a, n)) == false) {
					cout << "NIE\n";
				}
				else {
					cout << "TAK\n";
				}
			}
		}
	}
	return 0;
}