#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")