#include using namespace std; int main() { int N, M; cin >> N >> M; vector A(N), B(N); vector C(N); for(int i = 0; i < N; i++) { cin >> A[i] >> B[i] >> C[i]; } const long long INF = 1LL<<55; vector dp(N, vector(M+1, -INF)); { // init dp[0][0] = 0; for(int k = 1; k*A[0]-(k-1)*B[0] <= M; k++) { dp[0][k*A[0]-(k-1)*B[0]] = k*B[0]*C[0]; } } for(int i = 1; i < N; i++) { vector ep(M+1, -INF); for(int j = 0; j <= M; j++) { dp[i][j] = max(dp[i][j], dp[i-1][j]); dp[i][j] = max(dp[i][j], ep[j]); if(j+A[i] <= M) ep[j+A[i]] = max(ep[j+A[i]], dp[i-1][j]+B[i]*C[i]); if(j+A[i]-B[i] <= M) ep[j+A[i]-B[i]] = max(ep[j+A[i]-B[i]], ep[j]+B[i]*C[i]); } } long long ans = 0; for(int j = 1; j <= M; j++) { ans = max(ans, dp[N-1][j]); cout << ans << endl; } } /* -0 : +0 (k-1)*B[i]-k*A[i] : k*B[i]*C[i] */