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
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
bool mf(pair<pair<int, int>, int> p1,
				pair<pair<int, int>, int> p2) {
	int a1 = p1.first.second - p1.first.first;
	int a2 = p2.first.second - p2.first.first;
	if (a1 >= 0 && a2 < 0) {
		return true;
	}
	if (a1 < 0 && a2 >= 0) {
		return false;
	}
	if (a1 < 0) { //a2 < 0
		return p1.first.second > p2.first.second;
	}
	if (a1 > 0) { //a2 >= 0
		return p1.first < p2.first;
	}
	//a1 == 0 a2 >= 0
	return p1.first < p2.first;
}
int main() {
	int n; long long z; scanf("%d %lld", &n, &z);
	vector<pair<pair<int, int>, int > > vp;
	for(int i = 0; i < n; ++i) {
		int d, a; scanf("%d %d", &d, &a);
		vp.push_back(make_pair(make_pair(d, a), i));
	}
	sort(vp.begin(), vp.end(), mf);
	for(int i = 0; i < vp.size(); ++i) {
//		printf("%d", vp[i].second);
	}
	for(int i = 0; i < vp.size(); ++i) {
		if (z <= vp[i].first.first) {
			printf("NIE\n");
			return 0;
		}
		z += vp[i].first.second - vp[i].first.first;
		if (z <= 0) {
			printf("NIE\n");
			return 0;
		}
	}
	printf("TAK\n");
	for(int i = 0; i < vp.size(); ++i) {
		printf("%d ", vp[i].second+1);
	}
	printf("\n");
}