import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int []b=new int [101];
int [][]w=new int [101][101];
int [][]v=new int [101][101];
int []z=new int [n];
int t=0;
int []dp=new int [m+1];
for(int i=0;i<n;i++){
int sw=sc.nextInt();
int sv=sc.nextInt();
int g=sc.nextInt();
w[g][b[g]]=sw;
v[g][b[g]]=sv;
b[g]++; //存取每个组的数据数量
if(b[g]==1){
z[t]=g; //存取含有数据的组的位置
t++; //有数据的组别个数
}
}
for(int i=0;i<t;i++){ //一组只能取一个,所以挨个遍历
for(int j=m;j>=0;j--){ //因为不能重复选择所以逆循环
for(int num=0;num<b[z[i]];num++){ //一个组中挨个遍历
if(w[z[i]][num]<=j)
dp[j]=Math.max(dp[j],dp[j-w[z[i]][num]]+v[z[i]][num]);
}
}
}
System.out.println(dp[m]);
}
}