#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
ll *win,*lose,*use,*dp;
int main() {
int n,x;
cin >> n >> x;
win = new ll [n+1];
lose = new ll [n+1];
use = new ll [x+1];
dp = new ll [x+1];
memset(dp,0,(x+1)*sizeof(ll));
int i,j;
for(i = 1; i <= n; i++) {
scanf("%lld%lld%lld", lose+i, win+i, use+i);
}
for(i = 1; i <= n; i++) {
for(j = x; j >= 0; j--) {
if(static_cast<ll>(j) >= use[i]) {
dp[j] = max(dp[j]+lose[i], dp[j-use[i]]+win[i]);
} else {
dp[j] = dp[j] + lose[i];
}
}
}
ll s = 5*dp[x];
cout << s;
delete[]win;
delete[]lose;
delete[]use;
delete[]dp;
return 0;
}