#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 4000000000000000001LL long long op(long long a,long long b){ return max(a,b); } long long e(){ return 0; } int main(){ int N,T; cin>>N>>T; vector> a(N); rep(i,N){ int x,y,z; cin>>x>>y>>z; a[i] = {z,x,y}; } set S; rep(i,200005)S.insert(i); vector ma(200005); sort(a.rbegin(),a.rend()); rep(i,N){ auto it = S.lower_bound(a[i][1]); while(it!=S.end() && *it<=a[i][2]){ ma[(*it)] = a[i][0]; it = S.erase(it); } } segtree seg(200005); rep(i,200005){ long long v = ma[i]; if(i-T>=0)v += seg.prod(0,i-T+1); seg.set(i,v); } cout<