#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
ifstream f("stalpi.in");
ofstream g("stalpi.out");
int n,v[100005],dx[100005],dy[100005],c[100005];
bool set[300005];
long long a[300005],inf=(1LL<<38),b[100005],solq=0;
vector <int> lft[100005],val[100005];
//---------------------------------
int Update(int nod,int st,int dr,int key,long long val)
{ int mid;
if (st==dr) {a[nod]=1LL*val; set[nod]=1;}
else
{ mid=(st+dr)/2;
if (key<=mid) Update(2*nod,st,mid,key,val);
else Update(2*nod+1,mid+1,dr,key,val);
if (set[2*nod]) {a[nod]=a[2*nod]; set[nod]=1;}
else if (set[2*nod+1]) {a[nod]=a[2*nod+1]; set[nod]=1;}
if (set[2*nod] && set[2*nod+1])
if (1LL*(a[2*nod+1])<a[nod]) a[nod]=1LL*(a[2*nod+1]);
}
}
//---------------------------------
int Query(int nod,int st,int dr,int x1,int y1)
{ int mid;
if (x1<=st && dr<=y1) { if (set[nod] && 1LL*a[nod]<1LL*solq) solq=1LL*a[nod];}
else
{ mid=(st+dr)/2;
if (x1<=mid) Query(2*nod,st,mid,x1,y1);
if (y1>mid) Query(2*nod+1,mid+1,dr,x1,y1);
}
}
//-----------------------------
void Read()
{ int i,x,cost,s,d;
f>>n;
for(i=1;i<=n;i++)
{ f>>x>>cost>>s>>d;
v[i]=x;
dx[i]=max(0,x-s);
dy[i]=x+d;
c[i]=cost;
}
sort(v+1,v+n+1);
}
//-----------------------------
int Bs1(int x)
{ int i,l=1,r=n,m;
while(l<r)
{ m=(l+r)/2;
if (v[m]==x) return m;
if (v[m]>=x) r=m-1; else l=m+1;
}
if (v[l+1]>=x && v[l]<x) l++;
return l;
}
//------------------------------
int Bs2(int x)
{ int i,l=1,r=n,m;
while(l<r)
{ m=(l+r)/2;
if (v[m]==x) return m;
if (v[m]<=x) l=m+1; else r=m-1;
}
if (v[l]>x && v[l-1]<=x) l--;
return l;
}
//------------------------------
void FindInt()
{ int i;
for(i=1;i<=n;i++)
{dx[i]=Bs1(dx[i]);
dy[i]=Bs2(dy[i]);
lft[dy[i]].push_back(dx[i]);
val[dy[i]].push_back(c[i]);
}
}
//-------------------------------
void Dinamic()
{ int i,j;
b[0]=0;
Update(1,0,n,0,0);
for(i=1;i<=n;i++)
{ b[i]=1LL*inf;
for(j=0;j<lft[i].size();j++)
{ solq=1LL*inf;
Query(1,0,n,lft[i][j]-1,i-1);
if (solq!=inf)
if (1LL*(val[i][j]+solq)<1LL*b[i]) b[i]=1LL*(val[i][j]+solq);
}
if (b[i]!=inf)
Update(1,0,n,i,b[i]);
}
g<<1LL*b[n];
}
//------------------------------
int main()
{ Read();
FindInt();
Dinamic();
return 0;
}