#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
#define INF 1LL * 2000000000 * 200000
#define mp make_pair
#define pb push_back
#define BIGINT long long
long n, i, m, c, s, d, j, k, X[100010];
BIGINT a[300010], num, MIN, MIN1;
vector<pair<pair<long, long>, long> > info;
void make(long v1, long v2, long poz) {
if (i >= v1 && i <= v2) {
if (a[poz] > num) {
a[poz] = num;
}
if (v1 == v2)
return;
make(v1, (v1 + v2) / 2, poz * 2);
make((v1 + v2) / 2 + 1, v2, poz * 2 + 1);
}
return;
}
void query(long v1, long v2, long poz) {
if (k <= v1 && i - 1 >= v2) {
if (MIN > a[poz]) {
MIN = a[poz];
}
if (v1 == v2) {
return;
}
} else {
if (k > v2 || i - 1 < v1) {
return;
} else {
query(v1, (v1 + v2) / 2, poz * 2);
query((v1 + v2) / 2 + 1, v2, poz * 2 + 1);
}
}
return;
}
inline long long mIN(long a, long b) {
if (a < b) {
return a;
}
return b;
}
void update(long v1, long v2, long poz) {
if (i >= v1 && i <= v2) {
if (v1 == v2) {
a[poz] = num;
return;
}
update(v1, (v1 + v2) / 2, poz * 2);
update((v1 + v2) / 2 + 1, v2, poz * 2 + 1);
a[poz] = mIN(a[poz * 2], a[poz * 2 + 1]);
} else {
return;
}
}
long binary(long num) {
long l1 = 1, l2 = n + 2, sol = 1, mid;
while (l1 < l2) {
mid = ((l1 + l2) >> 1);
if (X[mid] <= num) {
sol = mid;
l1 = mid + 1;
} else {
l2 = mid;
}
}
return sol;
}
int main() {
freopen("stalpi.in", "r", stdin);
freopen("stalpi.out", "w", stdout);
scanf("%ld", &n);
for (i = 1; i <= n; ++i) {
scanf("%ld %ld %ld %ld", &X[i + 1], &c, &s, &d);
info.pb(mp(mp(X[i + 1] + d, X[i + 1] - s), c));
}
sort(info.begin(), info.end());
X[1] = -2000000000;
sort(X + 2, X + n + 2);
for (i = 1; i <= 300009; i++)
a[i] = INF;
i = 1;
num = 0;
make(1, n + 1, 1);
for (i = 2; i <= n + 1; ++i) {
num = INF;
make(1, n + 1, 1);
}
for (j = 0; j < n; ++j) {
i = binary(info[j].first.first);
k = binary(info[j].first.second - 1);
MIN = INF;
query(1, n + 1, 1);
MIN += info[j].second;
MIN1 = MIN;
MIN = INF;
k = i;
i++;
query(1, n + 1, 1);
i--;
if (MIN1 < MIN) {
num = MIN1;
update(1, n + 1, 1);
}
}
MIN = INF;
k = n + 1;
i = n + 2;
query(1, n + 1, 1);
printf("%lld\n", MIN);
return 0;
}