#include #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") using namespace std; int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(false); int N, M; cin >> N >> M; vector A(N), B(N), C(N); for(int i = 0; i < N; i++) { cin >> A[i] >> B[i] >> C[i]; } vector dp(M + 1, 0); for(int i = 0; i < N; i++) { vector vis(M + 1, false); for(int j = M; j >= 0; j--) { if(j + A[i] <= M) { dp[j] = max(dp[j], dp[j + A[i]] + (long long) B[i] * C[i]); vis[j] = true; } if(vis[j + A[i] - B[i]]) { dp[j] = max(dp[j], dp[j + A[i] - B[i]] + (long long) B[i] * C[i]); } } } for(int i = M - 1; i >= 0; i--) { cout << dp[i] << '\n'; } return 0; }