#include <iostream> #include <algorithm> #include <cstring> #include <cmath> #define maxn 35 using namespace std; typedef struct BG{ int h; int l; int t; }Bg; Bg bg[maxn]; // int h[maxn],l[maxn],t[maxn]; int dp[maxn];//在剩余的i时间获得的最多快乐度 bool cmp(Bg b1,Bg b2) { return b1.t<b2.t; } int main() { int N; while(cin>>N&&N!=-1) { int maxx = 0; for(int i=0;i<N;i++)cin>>bg[i].h>>bg[i].l>>bg[i].t; memset(dp,0,sizeof(dp)); sort(bg,bg+N,cmp); for(int i=0;i<N;i++) { for(int j=bg[i].t;j>=bg[i].l;j--) { dp[j] = max(dp[j],dp[j-bg[i].l]+bg[i].h); maxx = max(dp[j],maxx); } } cout<<maxx<<endl; } } // 64 位输出请用 printf("%lld")