#include<bits/stdc++.h>
using namespace std;
int c,d,n,ans = 0;
char cc;
int pro,cost;
const int MAX = 2e5+7;
//Learnt this concept from no of strictly increasing subarrays...
//Didn't get this idea though myself...
vector<vector<int> > tree(2*MAX,vector<int>(2,0));
void update(int row,int idx,int val)
{
//fuk one line update beech....
for(;idx<=MAX;idx+=(idx&-idx)) tree[idx][row] = max(tree[idx][row],val);
}
int query(int row,int idx)
{
int res = 0;
for(;idx>0;idx-=(idx&-idx)) res = max(res,tree[idx][row]);
return res;
}
int main(int argc, char const *argv[]) {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin>>n>>c>>d;
//0 for coins and 1 for diamonds
for(int i=1;i<=n;i++)
{
cin>>pro>>cost>>cc;
if(cc=='C')
{
int m1 = query(1,d),m2=0;
if(c-cost>=0) m2 = query(0,c-cost);
if(max(m1,m2)>0) ans = max(ans,max(m1,m2)+pro);
update(0,cost,pro);
}else
{
int m1 = query(0,c),m2=0;
if(d-cost>=0) m2 = query(1,d-cost);
if(max(m1,m2)>0) ans = max(ans,max(m1,m2)+pro);
update(1,cost,pro);
}
}
std::cout <<ans<< '\n';
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGMsZCxuLGFucyA9IDA7CmNoYXIgY2M7CmludCBwcm8sY29zdDsKY29uc3QgaW50IE1BWCA9IDJlNSs3OwovL0xlYXJudCB0aGlzIGNvbmNlcHQgZnJvbSBubyBvZiBzdHJpY3RseSBpbmNyZWFzaW5nIHN1YmFycmF5cy4uLgovL0RpZG4ndCBnZXQgdGhpcyBpZGVhIHRob3VnaCBteXNlbGYuLi4KCnZlY3Rvcjx2ZWN0b3I8aW50PiA+IHRyZWUoMipNQVgsdmVjdG9yPGludD4oMiwwKSk7Cgp2b2lkIHVwZGF0ZShpbnQgcm93LGludCBpZHgsaW50IHZhbCkKewogIC8vZnVrIG9uZSBsaW5lIHVwZGF0ZSBiZWVjaC4uLi4KICBmb3IoO2lkeDw9TUFYO2lkeCs9KGlkeCYtaWR4KSkgdHJlZVtpZHhdW3Jvd10gPSBtYXgodHJlZVtpZHhdW3Jvd10sdmFsKTsKfQoKaW50IHF1ZXJ5KGludCByb3csaW50IGlkeCkKewogIGludCByZXMgPSAwOwogIGZvcig7aWR4PjA7aWR4LT0oaWR4Ji1pZHgpKSByZXMgPSBtYXgocmVzLHRyZWVbaWR4XVtyb3ddKTsKICByZXR1cm4gcmVzOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciBjb25zdCAqYXJndltdKSB7CiAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgIGNpbj4+bj4+Yz4+ZDsKICAgLy8wIGZvciBjb2lucyBhbmQgMSBmb3IgZGlhbW9uZHMKICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgIHsKICAgICBjaW4+PnBybz4+Y29zdD4+Y2M7CiAgICAgaWYoY2M9PSdDJykKICAgICB7CiAgICAgICBpbnQgbTEgPSBxdWVyeSgxLGQpLG0yPTA7CiAgICAgICBpZihjLWNvc3Q+PTApIG0yID0gcXVlcnkoMCxjLWNvc3QpOwogICAgICAgaWYobWF4KG0xLG0yKT4wKSBhbnMgPSBtYXgoYW5zLG1heChtMSxtMikrcHJvKTsKICAgICAgIHVwZGF0ZSgwLGNvc3QscHJvKTsKICAgICB9ZWxzZQogICAgIHsKICAgICAgIGludCBtMSA9IHF1ZXJ5KDAsYyksbTI9MDsKICAgICAgIGlmKGQtY29zdD49MCkgbTIgPSBxdWVyeSgxLGQtY29zdCk7CiAgICAgICBpZihtYXgobTEsbTIpPjApIGFucyA9IG1heChhbnMsbWF4KG0xLG0yKStwcm8pOwogICAgICAgdXBkYXRlKDEsY29zdCxwcm8pOwogICAgIH0KICAgfQogICBzdGQ6OmNvdXQgPDxhbnM8PCAnXG4nOwogIHJldHVybiAwOwp9Cg==