#include<bits/stdc++.h>
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#define int long long
#define INF 1000000000000000000
using namespace std;
ifstream f("stalpi.in");
ofstream g("stalpi.out");
struct elem
{
int x,c,s,d;
}v[100005];
int cmp(elem aa, elem bb)
{
return aa.d<bb.d;
}
int n,k,pozx[100005],aint[4*100005],dp[100005],a[100005],lef[100005],righ[100005];
void update(int nod, int st, int dr, int poz, int val)
{
if(st==dr)
aint[nod]=val;
else
{
int mij=(st+dr)/2;
if(poz<=mij)
update(2*nod,st,mij,poz,val);
else
update(2*nod+1,mij+1,dr,poz,val);
aint[nod]=min(aint[2*nod],aint[2*nod+1]);
}
}
int query(int nod, int st, int dr, int l, int r)
{
if(st==l && dr==r)
return aint[nod];
else
{
int mij=(st+dr)/2;
if(r<=mij)
return query(2*nod,st,mij,l,r);
else
if(l>=mij+1)
return query(2*nod+1,mij+1,dr,l,r);
else
return min(query(2*nod,st,mij,l,mij),query(2*nod+1,mij+1,dr,mij+1,r));
}
}
signed main()
{
int i,j;
f>>n;
for(i=1;i<=n;i++)
{
f>>v[i].x>>v[i].c>>v[i].s>>v[i].d;
v[i].s=v[i].x-v[i].s;
v[i].d=v[i].x+v[i].d;
a[++k]=v[i].x;
}
sort(v+1,v+n+1,cmp);
sort(a+1,a+k+1);
i=1;
j=1;
while(i<=n && j<=k)
{
if(v[i].s>=a[j])
lef[i]=j,j++;
else
i++;
}
while(i<=n)
lef[i]=k;
i=1;
j=1;
while(i<=n && j<=k)
{
if(v[i].d>=a[j])
righ[i]=j,j++;
else
i++;
}
while(i<=n)
righ[i]=k,i++;
for(i=1;i<=n;i++)
{
if(lef[i]==0)
lef[i]=1;
if(righ[i]==0)
righ[i]=1;
}
for(i=1;i<=n;i++)
dp[i]=INF;
for(i=1;i<=4*n;i++)
aint[i]=INF;
for(i=1;i<=n;i++)
{
int ss=lef[i];
int dd=righ[i];
int nr=query(1,1,n,ss,dd);
if(nr==INF)
nr=0;
dp[dd]=min(dp[dd],v[i].c+nr);
update(1,1,n,i,dp[dd]);
}
g<<dp[n];
return 0;
}