using namespace std;
#include <cstdio>
#include <vector>
#include <algorithm>
#define maxn 100001
struct nod { int x, c,s, d, ps, pd; };
struct cmp{
bool operator()(const nod &a,const nod &b)const
{
if(a.x<b.x)return 1;
return 0;
}
};
nod a[maxn];
int n;
int H[3*maxn], H2[3*maxn];
int dp[maxn][2];
void dynamic()
{
int i,j,v;
dp[1][0]=0;
dp[1][1]=a[1].c;
for(i=2;i<=n;++i)
{
dp[i][0]=dp[i][1]=0x3f3f3f3f;
v=a[i].ps;
for(j=1;j<i;++j)
{
if(a[i].x-a[i].s>=a[j].x)
{
dp[i][1]=min(dp[i][1], dp[j-1][0]+a[i].c);
dp[i][1]=min(dp[i][1], dp[j-1][1]+a[i].c);
}
else if(a[j].x+a[j].d>=a[i].x-a[i].s)
{
dp[i][1]=min(dp[i][1],dp[j-1][1]+a[i].c);
}
else if(a[j].x+a[j].d>=a[i].x)
{
dp[i][0]=min(dp[i][0], dp[j-1][1]);
}
}
}
for(i=1;i<=n;++i)
{
printf("%d %d\n",dp[i][0],dp[i][1]);
}
printf("%d\n", min(dp[n][0], dp[n][1]));
}
void greedy()
{
int i,j;
long long S=0;
a[0].pd=1;
for(i=0;i<=n;)
{
int cmin=0x3f3f3f3f,p=-1;
for(j=i+1;j<=n;++j)
if(a[j].x-a[j].s<=a[i].x)
//if(a[i].x+a[i].d<a[j].x-a[j].s)
if(a[j].c<cmin) cmin=a[j].c,p=j;
if(p==-1)break;
// printf("%d %d \n",p,cmin);
i=p+1;
S+=cmin;
}
freopen("stalpi.out","w",stdout);
printf("%lld\n",S);
}
void solve()
{
int i, j, k, cnt,v;
for(i=1;i<=n;++i)
{
v=a[i].x+a[i].d;
for(j=i, cnt=(1<<20); cnt; cnt>>=1)
if(j+cnt<=n)
if(a[j+cnt].x<=v) j+=cnt;
a[i].pd=j;
v=a[i].x-a[i].s;
for(j=i, cnt=(1<<20); cnt; cnt>>=1)
if(j-cnt>=1)
if(a[j-cnt].x>=v) j-=cnt;
a[i].ps=j;
}
//for(i=1;i<=n;++i)printf("%d %d\n", a[i].ps, a[i].pd);
// dynamic();
greedy();
}
int main()
{
freopen("stalpi.in","r",stdin);
scanf("%d\n",&n);
for(int i=1;i<=n;++i) scanf("%d %d %d %d\n", &a[i].x, &a[i].c, &a[i].s, &a[i].d);
sort(a+1,a+n+1,cmp());
solve();
return 0;
}