#include <stdio.h>
#include <stdlib.h>

typedef struct Ispit {
	int rbr, brojESPB, daniDoIspita, daniZaUcenje;
} ispit;


main() {
	
	int n,m;
	int i,j;
	ispit *ispiti;
	int **opt;
	ispit temp;
	
	scanf("%d%d", &n, &m);
	ispiti = (ispit *)malloc((n+1)*sizeof(ispit));
	int krajRoka=0;
	for (i=1; i<=n; i++) {
		ispiti[i].rbr=i;
		ispit *temp = ispiti+i;
		scanf("%d%d%d", &(temp->brojESPB), &(temp->daniDoIspita), &(temp->daniZaUcenje));
		if (temp->daniDoIspita > krajRoka) {
			krajRoka=temp->daniDoIspita;
		}
	}
	/*
	printf("Uneti ispiti:\n");
	printf("rbr\tespb\tdoIspita\tzaUcenje\n");
	for (i=1; i<=n; i++) {
		temp = ispiti[i];
		printf("%d\t%d\t%d\t%d\n", temp.rbr, temp.brojESPB, temp.daniDoIspita, temp.daniZaUcenje);
	}
	* */
	
	opt = (int **)malloc((n+1)*sizeof(int *));
	for (i=0; i<=n; i++) {
		opt[i]=(int *)malloc((krajRoka+1)*sizeof(int));
	}
	
	for (i=0; i<=n; i++)
		for (j=0; j<=krajRoka; j++)
			opt[i][j]=0;
		
	for (i=1; i<=n-1; i++)
		for (j=i+1; j<=n; j++)
			if (ispiti[i].daniDoIspita > ispiti[j].daniDoIspita) {
				temp = ispiti[i];
				ispiti[i] = ispiti[j];
				ispiti[j] = temp;
			}
	
	/*		
	printf("Sortirani ispiti:\n");
	printf("rbr\tespb\tispit\tucenje\n");
	for (i=1; i<=n; i++) {
		temp = ispiti[i];
		printf("%d\t%d\t%d\t%d\n", temp.rbr, temp.brojESPB, temp.daniDoIspita, temp.daniZaUcenje);
	}
	*/
			
	for (i=1; i<=n; i++) 
		for (j=1; j<=krajRoka; j++) 
			if (ispiti[i].daniZaUcenje <= j)
				if (j<=ispiti[i].daniDoIspita)
					if (opt[i-1][j-ispiti[i].daniZaUcenje] + ispiti[i].brojESPB > opt[i-1][j])
						opt[i][j] = opt[i-1][j-ispiti[i].daniZaUcenje] + ispiti[i].brojESPB;
					else 
						opt[i][j] = opt[i-1][j];
				else
					if (opt[i][j-1] > opt[i-1][j])
						opt[i][j] = opt[i][j-1];
					else
						opt[i][j] = opt[i-1][j];
			else
				opt[i][j] = opt[i-1][j];
				

	/*
	printf("Matrica optimuma:\n   ");
	for (j=0; j<=krajRoka; j++)
		printf("%3d", j);
	printf("\n");
	for (j=0; j<=krajRoka; j++)
		printf("---");
	printf("---\n");
	for (i=0; i<=n; i++) {
		printf("%2d|",i);
		for (j=0; j<=krajRoka; j++) {
			printf("%3d", opt[i][j]);
		}
		printf("\n");
	}
	*/
	
	if (opt[n][krajRoka]>=m) {
		printf("moze\n");
		i=n; j=krajRoka;
		while(opt[i][j]!=0) {
			if (opt[i][j]==opt[i-1][j]) {
				i--;
			}
			else {
				printf("%d\n",ispiti[i].rbr);
				j -= ispiti[i].daniZaUcenje;
				i--;
			}
			if (ispiti[i].daniDoIspita < j)
				j = ispiti[i].daniDoIspita;
		}
	}
	else {
		printf("ne moze\n");
	}

	
}













