#include<bits/stdc++.h>
using namespace std;
int n,c,w,v,s,dp[2][1005];
int main(){
cin>>n>>c;
for(int i=1;i<=n;i++){
cin>>w>>v>>s;
int nd=1&i;
int nr=nd^1;
for(int j=0;j<w;j++){
deque<int>q;
for(int k=j;k<=c;k+=w){
dp[nd][k]=dp[nr][k];
while(!q.empty() and k-q.front()>sw)q.pop_front();
if(!q.empty())dp[nd][k]=max(dp[nd][k],dp[nr][q.front()]+(k-q.front())/wv);
while(!q.empty() and dp[nr][q.back()]+(k-q.back())/w*v<=dp[nr][k])q.pop_back();
q.push_back(k);
}
}
}
cout<<dp[n&1][c];
return 0;
}