#include using namespace std; constexpr int SIZE = 2 << 17; vector LP[SIZE], RP[SIZE]; long long dp[SIZE]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, T; cin >> N >> T; while (N--) { int l, r, p; cin >> l >> r >> p; // 1-indexed LP[l + 1].push_back(p); RP[r + 1].push_back(p); } multiset ms; ms.insert(0); for (int i = 1; i < SIZE; i++) { for (int p : LP[i]) { ms.insert(p); } dp[i] = max(dp[i - 1], dp[max(0, i - T)] + *ms.rbegin()); for (int p : RP[i]) { ms.erase(ms.find(p)); } } cout << dp[SIZE - 1] << endl; }