#include <bits/stdc++.h>
using namespace std;
int main() {
int N, V;
cin >> N >> V;
vector<int> C(N+1), X(N+1), Y(N+1);
for (int i = 1; i <= N; i++) {
cin >> C[i] >> X[i] >> Y[i];
}
vector<vector<int>> dp(N+1, vector<int>(V+1, 0));
for (int i = 1; i <= N; i++) {
for (int j = 0; j <= V; j++) {
if (j >= C[i]) {
dp[i][j] = max(dp[i-1][j-C[i]] + Y[i], dp[i-1][j]);
} else {
dp[i][j] = dp[i-1][j];
}
}
}
if (dp[N][V] < 0) {
cout << -1 << endl;
} else {
cout << dp[N][V] << endl;
}
return 0;
}