#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,ans,tot;
struct node{
int t,g,m;
}a[20],v[20];
int _(int b,int c){
if(b*b-4*c<0)return -1;
return (int)((-b+sqrt(b*b-4*c))/2);
}
bool ch(){
int G=0,P=1;
for(int i=1;i<=tot;i++){
int t=v[i].t-v[i-1].t,sum=0;
for(int j=i;j<=tot;j++){
sum+=v[j].g;
if(G>sum)continue;
t=min(t,_(P-v[j].t+v[i-1].t,sum-G-P*(v[j].t-v[i-1].t)));
}
if(t<0)return 0;
P+=t;
G+=P*(v[i].t-v[i-1].t-t)-v[i].g;
}
return 1;
}
signed main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)scanf("%lld%lld%lld",&a[i].t,&a[i].g,&a[i].m);
for(int i=0,cnt;i<(1<<n);i++){
cnt=tot=0;
for(int j=1;j<=n;j++)if(i&(1<<j-1))v[++tot]=a[j],cnt+=a[j].m;
if(ch())ans=max(ans,cnt);
}
printf("%lld",ans);
return 0;
}