n, t = map(int, input().split()); assert 1 <= n <= 2*10**5 and t <= 2*10**5 N = 2*10**5+2 E = [[] for _ in range(N)] for _ in range(n): l, r, p = map(int, input().split()); assert r-l < t and 1 <= p <= 10**9 E[l].append(p) E[r+1].append(~p) from heapq import * hq0 = [] hq1 = [] P = [0] * N for i in range(N-1): for p in E[i]: if p >= 0: heappush(hq0, -p) else: heappush(hq1, -~p) while hq0 and hq1 and hq0[0] == hq1[0]: heappop(hq0) heappop(hq1) if hq0: P[i] = -hq0[0] dp = [0] * N for i in range(N-1): dp[i+1] = max(dp[i+1], dp[i]) dp[min(N-1, i+t)] = max(dp[min(N-1, i+t)], dp[i]+P[i]) print(dp[N-1])