// ???????????????????????????????????????????????????????????
// ???????????????????????????????????????????????????????????
// ???????????????????????????????????????????????????????????
// ???????????????????????????????????????????????????????????
// ???????????????????????????????????????????????????????????
// ???????????????????????????????????????????????????????????
#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define tos to_string
#define __lcm(x, y) ((x /__gcd(x, y)) * y)
// #pragma GCC optimize ("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#define int long long
#define abs llabs
#define all(v) v.begin(), v.end()
const int N = 1E5 + 5, M = 1E5 + 5, LOG = 30;
const int inf = 1E18, MOD = 1E9 + 7, MOD1 = 998244353;
struct seg {
int lx, rx, d, g;
};
bool cmp(seg x, seg y) {
return x.lx < y.lx;
}
vector<seg> get(vector<seg> v) {
int sz = v.size();
if (sz == 1) {
return v;
}
int m = (sz >> 1);
vector<seg> tmpl, tmpr, comb;
for (int i = 0; i < sz; i++) {
if (i < m) tmpl.push_back(v[i]);
else tmpr.push_back(v[i]);
}
vector<seg> l = get(tmpl), r = get(tmpr);
int ptr1 = l.size() - 1, szr = r.size(), ptr2 = 1;
auto [cl, cr, cd, cg] = r[0];
bool ok = 0;
while (ptr1 >= 0 || ptr2 < szr) {
bool changed = 0;
if (ptr1 >= 0) {
auto [llx, lrx, ld, lg] = l[ptr1];
if (lrx + ld >= cl - cd) {
cd += ld - (cl - llx);
cl = llx;
cg += lg;
changed = 1;
ptr1--;
}
}
if (ptr2 < szr) {
auto [rlx, rrx, rd, rg] = r[ptr2];
if (cr + cd >= rlx - rd) {
cd += rd - (rlx - cr);
cr = rrx;
cg += rg;
changed = 1;
ptr2++;
}
}
if (!changed) {
comb.push_back({cl, cr, cd, cg});
ok = 1;
break;
}
}
if (!ok) {
comb.push_back({cl, cr, cd, cg});
}
while (ptr1 >= 0) {
comb.push_back(l[ptr1]);
ptr1--;
}
while (ptr2 < szr) {
comb.push_back(r[ptr2]);
ptr2++;
}
sort(all(comb), cmp);
return comb;
}
void solve() {
int n;
cin >> n;
vector<seg> v(n);
for (int i = 0; i < n; i++) {
int pos, g, d;
cin >> pos >> g >> d;
v[i] = {pos, pos, d, g};
}
vector<seg> res = get(v);
int ans = 0;
for (auto [lx, rx, d, g] : res) {
ans = max(ans, g);
}
cout << ans << "\n";
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int ttt = 1;
// cin >> ttt;
while(ttt--) {
solve();
}
}
/*
----x- --x- -x-------------x
*/