#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); for(int i = 0; i < N; i++) { vector vismax(M + 1); for(int j = M; j >= 0; j--) { if(j + A[i] <= M) { vismax[j] = max(vismax[j], dp[j + A[i]] + (long long) B[i] * C[i]); } if(j + A[i] - B[i] <= M && vismax[j + A[i] - B[i]] > 0) { vismax[j] = max(vismax[j], vismax[j + A[i] - B[i]] + (long long) B[i] * C[i]); } } for(int j = 0; j <= M; j++) { dp[j] = max(dp[j], vismax[j]); } } for(int i = M - 1; i >= 0; i--) { cout << dp[i] << '\n'; } return 0; }