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

class par {
	public:
		int f;
		int s;
		int dex;
	
};

bool comp (par a, par b) {
	if (a.s-a.f>=0 && b.s-b.f<0) return 1;
	else if (a.s-a.f>=0 && b.s-b.f>=0) return a.f<b.f;
	else if (a.s-a.f<0 && b.s-b.f<0) {
		if (a.s==b.s) return a.f>b.f;
		return a.s>b.s;
	}
	else if (a.s-a.f<0 && b.s-b.f>=0) return 0;
}

int n, hp;
par tab[100000];

int main () {
	
	scanf ("%d%d", &n, &hp);
	for (int i=0; i<n; ++i) {
		scanf ("%d%d", &tab[i].f, &tab[i].s);
		tab[i].dex=i+1;
	}
	sort (tab, tab+n, comp);
	
	for (int i=0; i<n; ++i) {
		hp-=tab[i].f;
		if (hp<=0) {
			printf ("NIE\n");
			return 0;
		}
		hp+=tab[i].s;
	}
	printf ("TAK\n");
	for (int i=0; i<n; ++i) {
		printf ("%d ", tab[i].dex);
	}
	printf ("\n");
	return 0;
}