#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, A, B;
cin >> N >> A >> B;
struct F{ int P, C, X; };
vector<F> a(N);
for(int i = 0; i < N; i++)
cin >> a[i].P >> a[i].C >> a[i].X;
// 1) PHẢI sort theo X tăng dần
sort(a.begin(), a.end(), [](auto &l, auto &r){
return l.X < r.X;
});
// dp[t]: trạng thái gộp:
// 0 ≤ t ≤ A : đã tiêu t mooney, cones chưa dùng => (j=t, k=0)
// A < t ≤ A+B : đã xài hết mooney, tiêu k = t−A cones => (j=A, k=t−A)
vector<int> dp(A+B+1, -1), ndp;
dp[0] = 0;
for(auto &f : a){
ndp = dp;
int P = f.P, C = f.C, X = f.X;
int maxConesForCow = C * X;
for(int t = 0; t <= A + B; t++){
if (dp[t] < 0) continue;
// 1) không mời: đã được copy sang ndp
// 2) mời:
if (t <= A) {
// PHASE MOONEY: cones toàn bộ B vẫn có sẵn
int useCones = min(B, maxConesForCow);
int discount = useCones / X;
int needM = C - discount;
// needM >= 0, chắc chắn t+needM ≤ A + C ≤ A+B
int nt = t + needM;
ndp[nt] = max(ndp[nt], dp[t] + P);
}
else {
// PHASE CONES: j=A, cones đã xài = t−A, còn lại rem = B-(t−A)
int usedSoFar = t - A;
int remCones = B - usedSoFar;
// chỉ cho phép nếu có thể dùng đủ để discount toàn bộ
if (remCones >= maxConesForCow) {
// dùng đúng maxConesForCow cones ⇒ discount = C, needM = 0
int nt = t + maxConesForCow;
ndp[nt] = max(ndp[nt], dp[t] + P);
}
}
}
dp.swap(ndp);
}
int ans = 0;
for(int t = 0; t <= A + B; t++)
ans = max(ans, dp[t]);
cout << ans << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpbnQgTiwgQSwgQjsKICAgIGNpbiA+PiBOID4+IEEgPj4gQjsKICAgIHN0cnVjdCBGeyBpbnQgUCwgQywgWDsgfTsKICAgIHZlY3RvcjxGPiBhKE4pOwogICAgZm9yKGludCBpID0gMDsgaSA8IE47IGkrKykKICAgICAgICBjaW4gPj4gYVtpXS5QID4+IGFbaV0uQyA+PiBhW2ldLlg7CgogICAgLy8gMSkgUEjhuqJJIHNvcnQgdGhlbyBYIHTEg25nIGThuqduCiAgICBzb3J0KGEuYmVnaW4oKSwgYS5lbmQoKSwgW10oYXV0byAmbCwgYXV0byAmcil7CiAgICAgICAgcmV0dXJuIGwuWCA8IHIuWDsKICAgIH0pOwoKICAgIC8vIGRwW3RdOiB0cuG6oW5nIHRow6FpIGfhu5lwOgogICAgLy8gICAwIOKJpCB0IOKJpCBBICAgOiDEkcOjIHRpw6p1IHQgbW9vbmV5LCBjb25lcyBjaMawYSBkw7luZyA9PiAoaj10LCBrPTApCiAgICAvLyAgIEEgPCAgdCDiiaQgQStCIDogxJHDoyB4w6BpIGjhur90IG1vb25leSwgdGnDqnUgayA9IHTiiJJBIGNvbmVzICAgPT4gKGo9QSwgaz104oiSQSkKICAgIHZlY3RvcjxpbnQ+IGRwKEErQisxLCAtMSksIG5kcDsKICAgIGRwWzBdID0gMDsKCiAgICBmb3IoYXV0byAmZiA6IGEpewogICAgICAgIG5kcCA9IGRwOwogICAgICAgIGludCBQID0gZi5QLCBDID0gZi5DLCBYID0gZi5YOwogICAgICAgIGludCBtYXhDb25lc0ZvckNvdyA9IEMgKiBYOwoKICAgICAgICBmb3IoaW50IHQgPSAwOyB0IDw9IEEgKyBCOyB0KyspewogICAgICAgICAgICBpZiAoZHBbdF0gPCAwKSBjb250aW51ZTsKCiAgICAgICAgICAgIC8vIDEpIGtow7RuZyBt4budaTogxJHDoyDEkcaw4bujYyBjb3B5IHNhbmcgbmRwCgogICAgICAgICAgICAvLyAyKSBt4budaToKICAgICAgICAgICAgaWYgKHQgPD0gQSkgewogICAgICAgICAgICAgICAgLy8gUEhBU0UgTU9PTkVZOiBjb25lcyB0b8OgbiBi4buZIEIgduG6q24gY8OzIHPhurVuCiAgICAgICAgICAgICAgICBpbnQgdXNlQ29uZXMgPSBtaW4oQiwgbWF4Q29uZXNGb3JDb3cpOwogICAgICAgICAgICAgICAgaW50IGRpc2NvdW50ID0gdXNlQ29uZXMgLyBYOwogICAgICAgICAgICAgICAgaW50IG5lZWRNID0gQyAtIGRpc2NvdW50OwogICAgICAgICAgICAgICAgLy8gbmVlZE0gPj0gMCwgY2jhuq9jIGNo4bqvbiB0K25lZWRNIOKJpCBBICsgQyDiiaQgQStCCiAgICAgICAgICAgICAgICBpbnQgbnQgPSB0ICsgbmVlZE07CiAgICAgICAgICAgICAgICBuZHBbbnRdID0gbWF4KG5kcFtudF0sIGRwW3RdICsgUCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBQSEFTRSBDT05FUzogaj1BLCBjb25lcyDEkcOjIHjDoGkgPSB04oiSQSwgY8OybiBs4bqhaSByZW0gPSBCLSh04oiSQSkKICAgICAgICAgICAgICAgIGludCB1c2VkU29GYXIgPSB0IC0gQTsKICAgICAgICAgICAgICAgIGludCByZW1Db25lcyA9IEIgLSB1c2VkU29GYXI7CiAgICAgICAgICAgICAgICAvLyBjaOG7iSBjaG8gcGjDqXAgbuG6v3UgY8OzIHRo4buDIGTDuW5nIMSR4bunIMSR4buDIGRpc2NvdW50IHRvw6BuIGLhu5kKICAgICAgICAgICAgICAgIGlmIChyZW1Db25lcyA+PSBtYXhDb25lc0ZvckNvdykgewogICAgICAgICAgICAgICAgICAgIC8vIGTDuW5nIMSRw7puZyBtYXhDb25lc0ZvckNvdyBjb25lcyDih5IgZGlzY291bnQgPSBDLCBuZWVkTSA9IDAKICAgICAgICAgICAgICAgICAgICBpbnQgbnQgPSB0ICsgbWF4Q29uZXNGb3JDb3c7CiAgICAgICAgICAgICAgICAgICAgbmRwW250XSA9IG1heChuZHBbbnRdLCBkcFt0XSArIFApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGRwLnN3YXAobmRwKTsKICAgIH0KCiAgICBpbnQgYW5zID0gMDsKICAgIGZvcihpbnQgdCA9IDA7IHQgPD0gQSArIEI7IHQrKykKICAgICAgICBhbnMgPSBtYXgoYW5zLCBkcFt0XSk7CiAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgcmV0dXJuIDA7Cn0K