#include #include #include #include #include #include #include #include #include #include #include using namespace std; const long long oo=1e9; struct node { long long t,v,l; }; node a[100]; long long sum[100],ans,n,w; bool cmp(node x,node y) { return x.l-x.t=ans) return; if(point>=w) { ans=t; return; } dfs(pos+1,max(t+a[pos].t,a[pos].l),point+a[pos].v); dfs(pos+1,t,point); } int main() { while(cin>>n>>w) { for(int i=0;i>a[i].t>>a[i].v>>a[i].l; sort(a,a+n,cmp); sum[n]=0; for(int i=n-1;i>=0;i--) sum[i]=sum[i+1]+a[i].v; if(sum[0]