#include #include using namespace std; using ll = long long; #define rep(i, n) for (int i = 0; i < (int)(n); i++) ll op(ll a,ll b){ return max(a,b); } ll e(){ return 0; } int main(){ int n,t; cin >> n >> t; const int m=4e5+1; vector>l(m),r(m); rep(i,n){ int L,R,p; cin >> L >> R >> p; l[L].push_back(p); r[R].push_back(p); } multisets; atcoder::segtreeseg(m); rep(i,m){ for(int j:l[i])s.insert(j); if(i!=0)for(int j:r[i-1])s.erase(s.find(j)); if(s.size()==0)continue; seg.set(i,seg.prod(0,max(i-t+1,0))+*s.rbegin()); } cout << seg.all_prod() << endl; return 0; }