#include<stdio.h>
struct nod{long info;nod *next;};
nod *st[101],*p;
long n,i,j,x[101],a[101],b[101],aux1,dr[101],aa,bb,zero;
long long c[101],va[101],vb[101],aux2,i8,cc,c_old,c_new;
void hd(long ic,long nc);
void sh(long i1,long i2);
void get_st(long ii);
void get_dr(long ii);
void make_arb();
long long get_cmin(long ii,long poz);
void update(long ii);
int main()
{
FILE *f,*g;f=fopen("stalpi.in","r");g=fopen("stalpi.out","w");
fscanf(f,"%ld",&n);
for(i=1;i<=n;i++)fscanf(f,"%ld%lld%ld%ld",&x[i],&c[i],&a[i],&b[i]);
for(i=1;i<=n;i++){a[i]=x[i]-a[i];b[i]=x[i]+b[i];}
for(i=n/2;i>=1;i--)hd(i,n);
for(i=n;i>=1;i--){sh(1,i);hd(1,i-1);}
for(i=1;i<=n;i++)
{ get_st(i);get_dr(i);}
/*i8=100000;i8*=i8;
make_arb();
for(i=1;i<=n;i++)
{ c_old=get_cmin(i-1,1);aa=i;
for(p=st[i];p;p=p->next)
{ c_new=c_old+c[p->info];
bb=dr[p->info];
update(1);
}
} */
fprintf(g,"%lld\n",get_cmin(n,1));
fcloseall();
return 0;
}
void hd(long ic,long nc)
{
long is,is1;is=2*ic;is1=is+1;
if(is>nc)return;
if(is<nc)if(x[is1]>x[is])is=is1;
if(x[is]>x[ic]){sh(is,ic);hd(is,nc);}
}
void sh(long i1,long i2)
{
aux1=x[i1];x[i1]=x[i2];x[i2]=aux1;
aux1=a[i1];a[i1]=a[i2];a[i2]=aux1;
aux1=b[i1];b[i1]=b[i2];b[i2]=aux1;
aux2=c[i1];c[i1]=c[i2];c[i2]=aux2;
}
void get_st(long ii)
{ long ll,rr,mm;
ll=1;rr=ii;
while(rr-ll>1)
{ mm=(ll+rr)/2;
if(x[mm]<=a[ii])ll=mm;
if(x[mm]>=a[ii])rr=mm;
}
if(x[ll]<a[ii])ll=rr;
p=new nod;
p->info=ii;
p->next=(st[ii])?st[ii]:0;
st[ll]=p;
}
void get_dr(long ii)
{ long ll,rr,mm;
ll=ii;rr=n;
while(rr-ll>=1)
{ mm=(ll+rr)/2;
if(x[mm]<=b[ii])ll=mm;
if(x[mm]>=b[ii])rr=mm;
}
if(x[rr]>b[ii])rr=ll;
dr[ii]=rr;
}
void make_arb()
{
long zero,fs,fd;
zero=1;
while(zero<n+1)zero<<=1;
for(i=0;i<=n;i++)
{ a[zero+i]=i;
b[zero+i]=i;
va[zero+i]=i8;
vb[zero+i]=i8;
}
for(i=zero-1;i>=1;i--)
{ fs=i>>1;fd=fs|1;
a[i]=a[fs];b[i]=b[fs];
va[i]=va[fs];vb[i]=vb[fd];
}
}
long long get_cmin(long ii,long poz)
{
if(va[poz]==vb[poz]) return va[poz];
if(ii<=b[poz<<1])return get_cmin(ii,poz<<1);
return get_cmin(ii,(poz<<1)|1);
}
void update(long ii)
{
if(bb<a[ii])return;
if(aa>b[ii])return;
if(bb>=b[ii]&&aa<=a[ii])
{ va[ii]=(va[ii]<c_new)?va[ii]:c_new;
vb[ii]=(vb[ii]<c_new)?vb[ii]:c_new;
if(va[ii]==vb[ii])return;
}
update(ii<<1);
update((ii<<1)|1);
}