#include <bits/stdc++.h>
using namespace std;
struct sb{
long long a,b;
}dp[110][110];
struct sb2{
long long x,y,c;
}f[110];
bool cmp(sb2 a,sb2 b){
return a.x > b.x;
}
long long n,v;
long long ans = -1e9;
int main(){
cin >> n >> v;
for (int i = 1; i <= n; i++){
cin >> f[i].c >> f[i].x >> f[i].y;
}
sort(f+1,f+n+1,cmp);
for (int i = 1; i <= n; i++){
for (int j = v; j >= f[i].c; j--){
dp[i][j].a = dp[i-1][j].a;
dp[i][j].b = dp[i-1][j].b;
for (int k = i; k >= 1; k--){
if (dp[k][j-f[i].c].a + f[i].x >= 0){
if (dp[k][j-f[i].c].b+f[i].y > dp[i][j].b){
dp[i][j].a = dp[k][j-f[i].c].a+f[i].x;
dp[i][j].b = dp[k][j-f[i].c].b+f[i].y;
}
}
}
if (dp[i][j].a >= 0) ans = max(ans,dp[i][j].b);
}
}
if (ans < 0) cout << -1;
else cout << ans;
return 0;
}