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