#include using namespace std; using ll = long long; #define rep(i,n) for(int i=0;i<(int)(n);i++) void chmax(ll &a,ll b){ if(a>N>>W>>D; vector> wt(2),vt(2); rep(i,N){ int t,w,v; cin>>t>>w>>v; wt.at(t).push_back(w); vt.at(t).push_back(v); } vector> ans(2); rep(t,2){ vector &w=wt.at(t); vector &v=vt.at(t); int m=w.size(); vector dp(W+1,-1e18); dp.at(0)=0; rep(i,m){ vector ndp(W+1,-1e18); rep(j,W+1){ if(dp.at(j)<0) continue; chmax(ndp.at(j),dp.at(j)); if(j+w.at(i)<=W){ chmax(ndp.at(j+w.at(i)),dp.at(j)+v.at(i)); } } swap(dp,ndp); } swap(ans.at(t),dp); } ll res=0; rep(i,W+1) rep(j,W+1){ if(abs(i-j)<=D&&i+j<=W){ chmax(res,ans.at(0).at(i)+ans.at(1).at(j)); } } cout<