#include<bits/stdc++.h>
#define maxn 1000010
#define int unsigned long long
#define double long double
using namespace std;
int n,cnt[maxn],x[maxn],pre[maxn],dp[maxn],head,tail,q[maxn],p[maxn],c[maxn];
bool ap;
inline double X(int id){return (double)cnt[id];}
inline double Y(int id){return (double)(dp[id]-pre[id]+cnt[id]*x[id]);}
inline double k(int i,int j){return (double)((Y(i)-Y(j))/(X(i)-X(j)));}
signed main(){
cin>>n;
for(int i=1;i<=n;++i){
cin>>x[i]>>p[i]>>c[i];
if(p[i]==0){i--;n--;}
cnt[i]=cnt[i-1]+p[i];
pre[i]=pre[i-1]+cnt[i-1]*(x[i]-x[i-1]);
}
if(n==0){cout<<0;return 0;}
memset(dp,0x7fffffffffffffff,sizeof dp);
head=tail=0;q[head]=dp[0]=0;
for(int i=1;i<=n;++i){
while(head<tail&&(Y(q[head+1])-Y(q[head]))<=x[i]*(X(q[head+1])-X(q[head])))head++;
int j=q[head];dp[i]=dp[j]+c[i]+pre[i]-pre[j]-cnt[j]*(x[i]-x[j]);
while(head<tail&&(Y(q[tail])-Y(q[tail-1]))*(X(i)-X(q[tail]))>=(Y(q[tail])-Y(i))*(X(q[tail-1])-X(q[tail])))tail--;
q[++tail]=i;
}
if(p[n]==0){
int ans=0x7fffffffffffffff;
for(int j=n;j>=1;j--){
if(p[j])break;
else ans=min(ans,dp[j]);
}
cout<<ans;
}
else cout<<dp[n];
return 0;
}