/*----------------------
Koniecko Łukasz - lukon
lukon10@wp.pl
----------------------*/
/*---------------------------------------- 
Potyczki Algorytmiczne 2014, runda 2
Zadanie: BOH
Bohater [B]
-----------------------------------------*/

#include <iostream>
#include <list>

using namespace std;

typedef struct potwor{
	int i; //numer potwora
	int d; //punkty życia obrażenia
	int a; //punkty życia eliksir
	int ad; //bilans eliksir-obrażenia
} Potwor;

bool sort_ad(const Potwor& p1,const Potwor& p2){
	return p1.ad > p2.ad;
}

bool sort_d(const Potwor& p1,const Potwor& p2){
	if(p1.d == p2.d){
		return p1.a > p2.a;
	}
	else return p1.d > p2.d;
}


int main(){
	int n,z; 
	cin >> n; //liczba potworów
	cin >> z; //punkty życia gracza
	
	list<Potwor> dane; //dane do zadania
	list<int> walki; //kolejnosc toczenia walk
	
	/* Wczytanie danych */
	for(int i=1; i <= n; i++){
		Potwor p;
		p.i = i;
		cin >> p.d;
		cin >> p.a;
		p.ad = p.a - p.d;
		dane.push_back(p);
	}	
	
	/* Sortowanie po bilansie elixir-obrażenia (a-d) */
	dane.sort(sort_ad);
	
	/* Walka z potworami o bilansie dodatnim lub zerowym */
	for(list<Potwor>::iterator iter=dane.begin(); iter != dane.end(); ){
		Potwor p = *iter;
	 	if(p.ad >= 0){
	 		if(p.d >= z){ //punkty obrażeń >= puknkty zdrowia
	 			iter++; //pominąć, bo gracz nie da rady pokonać potwora, walka w kolejnym etapie
	 		}
	 		else{
	 			walki.push_back(p.i);
	 			z += p.ad;
	 			iter = dane.erase(iter);
			}
	 	}
	 	else if(p.ad < 0)
	 		break;		
	}
	
	/* Dogrywka z potworami o bilansie dodatnim lub zerowym */
	int test=0;
	for(list<Potwor>::iterator iter=dane.begin(); iter != dane.end(); ){
		Potwor p = *iter;
		if(p.ad >= 0){
	 		if(p.d >= z){ //punkty obrażeń >= puknkty zdrowia
	 			test = 1;
	 			break; //KONIEC -> NIE
	 		}
	 		else{
	 			walki.push_back(p.i);
	 			z += p.ad;
	 			iter = dane.erase(iter);
			}
	 	}
	 	else if(p.ad < 0)
	 		break; //kolejny etap
	}
	if(test) {
		cout << "NIE" << endl;
		return 0;
	}
		
	/* Sortowanie po ilosci zadawanych obrażeń */ 
	dane.sort(sort_d);
		
	/* Walka z potworami o bilansie ujemnym */
	test = 0;
	for(list<Potwor>::iterator iter=dane.begin(); iter != dane.end(); iter++){
		Potwor p = *iter;
		if(p.d >= z){ //punkty obrażeń >= puknkty zdrowia
			test = 1; //KONIEC -> NIE
			break;
		}
		else{
			walki.push_back(p.i);
	 		z += p.ad;	 		
		}
	}
	
	if(test) {
		cout << "NIE" << endl;
		return 0;
	}
	
	/* Wynik walki pozytywny */
	cout << "TAK" << endl;
	for(list<int>::iterator iter=walki.begin(); iter != walki.end(); iter++){
		cout << *iter << " ";
	}
}
