#include <iostream>
#include <algorithm>
#define MAXN 40005
using namespace std;
struct node
{
int a;
int b;
int c;
};
node _m[];
bool mark[MAXN];
bool op(node a,node b);
int main()
{
//freopen("acm.acm","r",stdin);
int n;
int i;
int j;
int k;
int max;
cin>>n;
for(i = ; i < n; ++ i)
{
cin>>_m[i].a>>_m[i].b>>_m[i].c;
}
memset(mark,false,sizeof(mark));
sort(_m,_m+n,op);
mark[] = true;
max = ;
for(i = ; i < n; ++ i)
{
for(j = max; j >= ; -- j)
{
if(mark[j])
{
int tem;
for(k = ; k <= _m[i].c; ++ k)
{
tem = j + k*_m[i].a;
if(tem > _m[i].b)
{
break;
}
mark[tem] = true;
if(tem > max)
{
max = tem;
}
}
}
}
}
cout<<max<<endl;
}
bool op(node a,node b)
{
if(a.b < b.b)
{
return true;
}
return false;
}