#include <fstream>
#include <algorithm>
using namespace std;
#define MAXN 100010
#define MAXX 262144
#define INF 1000000000
#define ff first
#define ss second
#define mp make_pair
int N, L;
int ileft, iright;
int value;
pair < pair <int, int>, int > B[MAXN];
int X[MAXN];
int C[MAXN], best[MAXX];
inline int min(int a, int b)
{
if (a < b) return a;
return b;
}
inline int search(int x)
{
int front = 1, middle, back = N, rez = 0;
while (front <= back)
{
middle = (front + back) / 2;
if (X[middle] < x)
{
rez = middle;
front = middle + 1;
}
else back = middle - 1;
}
return rez;
}
inline int search2(int x)
{
int front = 1, middle, back = N, rez = 0;
while (front <= back)
{
middle = (front + back) / 2;
if (B[middle].ff.ff >= x)
{
rez = middle;
back = middle - 1;
}
else front = middle + 1;
}
return rez;
}
inline int query(int p, int r, int nod)
{
if (ileft <= p && r <= iright) return best[nod];
else {
int q = (p+r) / 2;
int rez = INF;
if (ileft <= q) rez = query(p, q, nod*2);
if (q < iright) rez = min(rez, query(q+1, r, nod*2+1));
return rez;
}
}
inline void update(int p, int r, int nod)
{
if (p == r) best[nod] = value;
else {
int q = (p+r) / 2;
if (ileft <= q) update(p, q, nod*2);
if (q < iright) update(q+1, r, nod*2+1);
best[nod] = min(best[nod*2], best[nod*2+1]);
}
}
int main()
{
ifstream fin("stalpi.in");
ofstream fout("stalpi.out");
// freopen("stalpi.in", "r", stdin);
// freopen("stalpi.out", "w", stdout);
int i, S, D, Cost;
fin >> N;
// scanf("%d ", &N);
for (i = 1; i <= N; i++)
{
fin >> X[i] >> Cost >> S >> D;
D = X[i] + S;
S = X[i] - S;
B[i] = mp( mp(D, S), Cost);
// scanf("%d %d %d %d ", &X[i], &Cost[i], &S[i], &D[i]);
}
for (L = 1; L < N; L <<= 1);
for (i = 1; i < 2*L; i++) best[i] = INF;
sort(B+1, B+N+1);
sort(X+1, X+N+1);
for (i = 1; i <= N; i++)
{
ileft = search(B[i].ff.ss);
if (ileft == 0) C[i] = B[i].ss;
else {
ileft = search2(X[ileft]);
iright = i-1;
if (ileft > iright) C[i] = INF;
else C[i] = query(1, L, 1) + B[i].ss;
}
ileft = iright = i;
value = C[i];
update(1, L, 1);
}
ileft = search2(X[N]);
iright = N;
// printf("%d\n", query(1, L, 1));
fout << query(1, L, 1) << endl;
return 0;
}