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
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
#include <algorithm>
#include <fstream>
#include <string>
#include <queue>
#include <set>
#include <stack>
#include <map>
#include <sstream>
#include <iostream>
#include <cmath>
using namespace std;

typedef unsigned int uint;
typedef long long int64;
typedef vector<int> vi;
typedef vector<string> vs;
typedef pair<int, int> pI;
typedef pair<string, int> pSI;
typedef pair<int, string> pIS;

#define FOR(i,n) for(int i=0, upTo##i=n; i<upTo##i; ++i)
#define REVFOR(i,n) for(int i=(n)-1; i>=0; --i)
#define FOR2(i,b,n) for(int i=b; i<(n); ++i)
#define REVFOR2(i,b,n) for(int i=(n)-1; i>=b; --i)
#define SC(i) scanf("%d", i)
#define ALL(C) (C).begin(), (C).end()
#define RALL(C) (C).rbegin(), (C).rend()
#define MIN(C) *min_element(ALL(C))
#define MAX(C) *max_element(ALL(C))
#define A first
#define B second

class X {
public:
	int x, y, pos;
	X(int _x, int _y, int _pos) : x(_x), y(_y), pos(_pos) { }
};

vector<X> p;
vector<X> m;

bool compP(const X &p1, const X &p2) {
	return p1.x < p2.x;
}

bool compM(const X &p1, const X &p2) {
	return p1.y > p2.y;
}

void start() {
	int n, z;
	cin >> n >> z;
	int a, b;
	FOR(i, n) {
		cin >> a >> b;
		if (a <= b) {
			p.push_back(X(a, b, i + 1));
		}
		else {
			m.push_back(X(a, b, i + 1));
		}
	}

	sort(ALL(p), compP);
	sort(ALL(m), compM);

	bool res = true;
	FOR(i, p.size()) {
		z -= p[i].x;
		if (z <= 0)
		{
			res = false;
			break;
		}
		z += p[i].y;
	}

	if (res){
		FOR(i, m.size()) {
			z -= m[i].x;
			if (z <= 0)
			{
				res = false;
				break;
			}
			z += m[i].y;
		}
	}

	cout << (res ? "TAK" : "NIE") << endl;
	if (res) {
		FOR(i, p.size()) {
			if (i != 0) cout << ' ';
			cout << p[i].pos;
		}
		if (m.size() != 0 && p.size() != 0)
			cout << ' ';
		FOR(i, m.size()) {
			if (i != 0) cout << ' ';
			cout << m[i].pos;
		}
	}
}

int main(void) {
	start();

	return 0;
}