use proconio::input; #[allow(unused)] use proconio::marker::*; #[allow(unused)] use std::collections::*; fn main() { input! { n: usize, t: usize, mut lrp: [(usize, usize, u64); n], }; let mut p = vec![0; 400_000 + 1]; for &(l, r, pi) in &lrp { for i in l..=r { p[i] = p[i].max(pi); } } let mut dp = vec![0; 400_000 + 1]; for i in t..=400_000 { dp[i] = dp[i - 1].max(dp[i - t] + p[i - t]); } println!("{}", dp.last().unwrap()); }