#include <iostream> #include <vector> #include<algorithm> using namespace std; int N; struct BG { int h; int l; int t; }; BG bg; vector<BG> bgs; int main() { while(cin>>N&&N>0) { bgs.clear(); for(int i=0;i<N;i++) { cin>>bg.h>>bg.l>>bg.t; bgs.push_back(bg); } //将bg发起人离校时间由早到晚排序 sort(bgs.begin(),bgs.end(),[](const BG & a,const BG & b) { return a.t<b.t; }); /*bgs[bgs.size()-1].t 是 最晚离校的时间 dp[j]是j时刻获得的最大快乐度*/ vector<int> dp(bgs[bgs.size()-1].t+1,0); for(int i=0;i<N;i++) { for(int j=bgs[i].t;j>=0;j--) { if(j-bgs[i].l>=0) dp[j]=max(dp[j-bgs[i].l]+bgs[i].h,dp[j]); } } cout<<*max_element(dp.begin(),dp.end())<<endl; } } // 64 位输出请用 printf("%lld")