#include using namespace std; using ll = long long; int main(void) { int N, T; cin >> N >> T; vector L(N), R(N); vector P(N); for (int i = 0; i < N; i++) { cin >> L[i] >> R[i] >> P[i]; } vector> add(200009), rem(200009); for (int i = 0;i < N;i++) { add[L[i]].push_back(P[i]); rem[R[i] + 1].push_back(P[i]); } multiset s; vector mx; for (int i = 0;i <= 200000;i++) { for (auto v : add[i])s.insert(v); if (s.empty())mx.push_back(0); else mx.push_back(*s.rbegin()); for (ll v : rem[i]) { auto it = s.find(v); if (it != s.end())s.erase(it); } } vector dp(400009, -(1LL << 60)); dp[0] = 0; int rmx = *max_element(R.begin(), R.end()); for (int i = 0; i <= 200000; i++) { if (i <= rmx)dp[i + T] = max(dp[i + T], dp[i] + mx[i]); dp[i + 1] = max(dp[i + 1], dp[i]); } ll ans = *max_element(dp.begin(), dp.end()); cout << ans << "\n"; }