#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int nx = 3e5 + 5;
struct Data {
ll x, a, b;
bool operator< (const Data &o) const {
return x < o.x;
}
Data(int x=0, int a = 0, int b = 0): x(x), a(a), b(b) {}
};
int n; ll d;
vector<Data> v;
vector<int> interval;
bool check(ll f) {
ll cur = f;
for (int i = 0; i + 1 < v.size(); i++) {
ll dist = v[i+1].x - v[i].x;
cur -= dist;
if (cur < 0) return false;
if (f > v[i + 1].b) continue;
cur += v[i + 1].a;
}
return true;
}
int main() {
ios_base::sync_with_stdio(0), cin.tie(0);
cin >> n >> d;
v.emplace_back(0, 0, 0);
v.emplace_back(d, 0, 0);
for (int i = 1; i <= n; i++) {
int x, a, b;
cin >> x >> a >> b;
v.emplace_back(x, a, b);
interval.push_back(b);
}
sort(v.begin(), v.end());
interval.push_back(-1);
interval.push_back(d);
sort(interval.begin(), interval.end());
interval.erase(unique(interval.begin(), interval.end()), interval.end());
ll ans = 1e9 + 1;
for (int i = 0; i + 1 < interval.size(); i++) {
ll l = interval[i]+1, r = interval[i + 1];
if (l > r) continue;
while (l < r) {
int mid = (l + r) / 2;
if (check(mid)) r = mid;
else l = mid + 1;
}
if (check(l)) ans = min(ans, l);
}
cout << ans;
}