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

struct Herbata {
	long long t,p;
	Herbata(int p, int t):t(t),p(p){}
	inline bool operator<(const Herbata &x) const {return t<x.t;}
};

void solve() {
	int n;
	cin >> n;
	vector<Herbata> przed,po;
	for (int i=0;i<n;i++) {
		int l,a,b;
		cin >> l >> a >> b;
		przed.push_back(Herbata(l,a));
		po.push_back(Herbata(l,b));
	}
	sort(przed.begin(),przed.end());
	sort(po.begin(),po.end());
	//for (auto &it:po) {cout << it.p << " " << it.t <<endl;}
	int ipo=0,iprzed=0;
	long long energia = 0;
	while (energia>=0 && ipo<n && iprzed<n) {
		//cout <<po[ipo].p << " "<<po[ipo].t<<"  ;  "<<przed[iprzed].p<<" "<<przed[iprzed].t<<endl;
		if (po[ipo].p<przed[iprzed].p) {
			energia += (po[ipo].p)*(po[ipo].t-przed[iprzed].t);
			przed[iprzed].p -= po[ipo].p;
			ipo++;
		} else {
			energia += (przed[iprzed].p)*(po[ipo].t-przed[iprzed].t);
			po[ipo].p -= przed[iprzed].p;
			iprzed++;
		}
		//cout << energia << endl;
	}
	cout << (energia==0 ? "TAK" : "NIE")<<endl;
}

int main() {
	ios_base::sync_with_stdio(0);
	int t;
	cin >> t;
	while (t--)
		solve();
	return 0;
}