#include <iostream> #include <algorithm> #define MAXN 40005 using namespace std; struct node { int a; int b; int c; }; node _m[450]; 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 = 0; i < n; ++ i) { cin>>_m[i].a>>_m[i].b>>_m[i].c; } memset(mark,false,sizeof(mark)); sort(_m,_m+n,op); mark[0] = true; max = 0; for(i = 0; i < n; ++ i) { for(j = max; j >= 0; -- j) { if(mark[j]) { int tem; for(k = 1; 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; }