#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 Friend { int P, C, X; };
vector<Friend> f(N);
for(int i = 0; i < N; i++){
// đọc vào P_i, C_i, X_i
cin >> f[i].P >> f[i].C >> f[i].X;
}
// sort theo X_i tăng để lúc nào cũng \"xài cones\" hiệu quả nhất trước
sort(f.begin(), f.end(), [&](auto &a, auto &b){
return a.X < b.X;
});
const int INF_NEG = -1e9;
// dp[j][k] = max popularity khi còn j moonie và k cones
vector<vector<int>> dp(A+1, vector<int>(B+1, INF_NEG));
vector<vector<int>> nxt(A+1, vector<int>(B+1, INF_NEG));
// khởi: chưa mời ai, có A moonie và B cones, độ phổ biến = 0
dp[A][B] = 0;
for(int i = 0; i < N; i++){
auto &P = f[i].P;
auto &C = f[i].C;
auto &X = f[i].X;
// reset nxt về -inf
for(int j = 0; j <= A; j++)
fill(nxt[j].begin(), nxt[j].end(), INF_NEG);
for(int j = 0; j <= A; j++){
for(int k = 0; k <= B; k++){
int cur = dp[j][k];
if(cur < 0) continue;
// 1) không mời bạn i
nxt[j][k] = max(nxt[j][k], cur);
// 2) mời bạn i
// maxDiscount = min(C, k / X) (số moonie được giảm tối đa)
int maxDiscount = min(C, k / X);
int conesUsed = maxDiscount * X;
int moneyCost = C - maxDiscount;
// nếu đủ tiền và đủ cones
if(j >= moneyCost && k >= conesUsed){
int nj = j - moneyCost;
int nk = k - conesUsed;
nxt[nj][nk] = max(nxt[nj][nk], cur + P);
}
}
}
dp.swap(nxt);
}
// tìm kết quả tốt nhất trên mọi j,k còn lại
int ans = 0;
for(int j = 0; j <= A; j++)
for(int k = 0; k <= B; k++)
ans = max(ans, dp[j][k]);
cout << ans << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpbnQgTiwgQSwgQjsKICAgIGNpbiA+PiBOID4+IEEgPj4gQjsKICAgIHN0cnVjdCBGcmllbmQgeyBpbnQgUCwgQywgWDsgfTsKICAgIHZlY3RvcjxGcmllbmQ+IGYoTik7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgTjsgaSsrKXsKICAgICAgICAvLyDEkeG7jWMgdsOgbyBQX2ksIENfaSwgWF9pCiAgICAgICAgY2luID4+IGZbaV0uUCA+PiBmW2ldLkMgPj4gZltpXS5YOwogICAgfQoKICAgIC8vIHNvcnQgdGhlbyBYX2kgdMSDbmcgxJHhu4MgbMO6YyBuw6BvIGPFqW5nIFwieMOgaSBjb25lc1wiIGhp4buHdSBxdeG6oyBuaOG6pXQgdHLGsOG7m2MKICAgIHNvcnQoZi5iZWdpbigpLCBmLmVuZCgpLCBbJl0oYXV0byAmYSwgYXV0byAmYil7CiAgICAgICAgcmV0dXJuIGEuWCA8IGIuWDsKICAgIH0pOwoKICAgIGNvbnN0IGludCBJTkZfTkVHID0gLTFlOTsKICAgIC8vIGRwW2pdW2tdID0gbWF4IHBvcHVsYXJpdHkga2hpIGPDsm4gaiBtb29uaWUgdsOgIGsgY29uZXMKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gZHAoQSsxLCB2ZWN0b3I8aW50PihCKzEsIElORl9ORUcpKTsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gbnh0KEErMSwgdmVjdG9yPGludD4oQisxLCBJTkZfTkVHKSk7CgogICAgLy8ga2jhu59pOiBjaMawYSBt4budaSBhaSwgY8OzIEEgbW9vbmllIHbDoCBCIGNvbmVzLCDEkeG7mSBwaOG7lSBiaeG6v24gPSAwCiAgICBkcFtBXVtCXSA9IDA7CgogICAgZm9yKGludCBpID0gMDsgaSA8IE47IGkrKyl7CiAgICAgICAgYXV0byAmUCA9IGZbaV0uUDsKICAgICAgICBhdXRvICZDID0gZltpXS5DOwogICAgICAgIGF1dG8gJlggPSBmW2ldLlg7CgogICAgICAgIC8vIHJlc2V0IG54dCB24buBIC1pbmYKICAgICAgICBmb3IoaW50IGogPSAwOyBqIDw9IEE7IGorKykKICAgICAgICAgICAgZmlsbChueHRbal0uYmVnaW4oKSwgbnh0W2pdLmVuZCgpLCBJTkZfTkVHKTsKCiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8PSBBOyBqKyspewogICAgICAgICAgICBmb3IoaW50IGsgPSAwOyBrIDw9IEI7IGsrKyl7CiAgICAgICAgICAgICAgICBpbnQgY3VyID0gZHBbal1ba107CiAgICAgICAgICAgICAgICBpZihjdXIgPCAwKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAvLyAxKSBraMO0bmcgbeG7nWkgYuG6oW4gaQogICAgICAgICAgICAgICAgbnh0W2pdW2tdID0gbWF4KG54dFtqXVtrXSwgY3VyKTsKCiAgICAgICAgICAgICAgICAvLyAyKSBt4budaSBi4bqhbiBpCiAgICAgICAgICAgICAgICAvLyAgICBtYXhEaXNjb3VudCA9IG1pbihDLCBrIC8gWCkgIChz4buRIG1vb25pZSDEkcaw4bujYyBnaeG6o20gdOG7kWkgxJFhKQogICAgICAgICAgICAgICAgaW50IG1heERpc2NvdW50ID0gbWluKEMsIGsgLyBYKTsKICAgICAgICAgICAgICAgIGludCBjb25lc1VzZWQgICA9IG1heERpc2NvdW50ICogWDsKICAgICAgICAgICAgICAgIGludCBtb25leUNvc3QgICA9IEMgLSBtYXhEaXNjb3VudDsKCiAgICAgICAgICAgICAgICAvLyBu4bq/dSDEkeG7pyB0aeG7gW4gdsOgIMSR4bunIGNvbmVzCiAgICAgICAgICAgICAgICBpZihqID49IG1vbmV5Q29zdCAmJiBrID49IGNvbmVzVXNlZCl7CiAgICAgICAgICAgICAgICAgICAgaW50IG5qID0gaiAtIG1vbmV5Q29zdDsKICAgICAgICAgICAgICAgICAgICBpbnQgbmsgPSBrIC0gY29uZXNVc2VkOwogICAgICAgICAgICAgICAgICAgIG54dFtual1bbmtdID0gbWF4KG54dFtual1bbmtdLCBjdXIgKyBQKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkcC5zd2FwKG54dCk7CiAgICB9CgogICAgLy8gdMOsbSBr4bq/dCBxdeG6oyB04buRdCBuaOG6pXQgdHLDqm4gbeG7jWkgaixrIGPDsm4gbOG6oWkKICAgIGludCBhbnMgPSAwOwogICAgZm9yKGludCBqID0gMDsgaiA8PSBBOyBqKyspCiAgICAgICAgZm9yKGludCBrID0gMDsgayA8PSBCOyBrKyspCiAgICAgICAgICAgIGFucyA9IG1heChhbnMsIGRwW2pdW2tdKTsKCiAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgcmV0dXJuIDA7Cn0K