#include using namespace std; #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") using ll = long long; const ll INF = 1e18; //O(3^n) int main(){ ll n,m,q; cin >> n >> m >> q; vector a(n),b(n); vector> x(n); for(ll i = 0;i < n;i++){ cin >> x[i].first >> x[i].second; } sort(x.rbegin(),x.rend()); for(ll i = 0;i < n;i++){ a[i] = x[i].first; b[i] = x[i].second; } ll msum = 0,qsum = 0,val = 0,ans = 0; auto rec = [&](auto &rec,ll i) -> void { if(i==n){ ans = max(ans,val); return; } rec(rec,i+1); if(msum+a[i] <= m){ msum += a[i]; val += b[i]; rec(rec,i+1); msum -= a[i]; val -= b[i]; } if(qsum+a[i] <= q){ qsum += a[i]; val += b[i]; rec(rec,i+1); qsum -= a[i]; val -= b[i]; } return; }; rec(rec,0); cout << ans << endl; }