import sys, math sys.setrecursionlimit(10**8) sys.set_int_max_str_digits(0) INF = 1e18 MOD = 998244353 from bisect import bisect_left, bisect_right from collections import deque, defaultdict, Counter from itertools import product, combinations, permutations, groupby, accumulate from heapq import heapify, heappop, heappush def I(): return sys.stdin.readline().rstrip() def II(): return int(sys.stdin.readline().rstrip()) def IS(): return sys.stdin.readline().rstrip().split() def MII(): return map(int, sys.stdin.readline().rstrip().split()) def LI(): return list(sys.stdin.readline().rstrip()) def TII(): return tuple(map(int, sys.stdin.readline().rstrip().split())) def LII(): return list(map(int, sys.stdin.readline().rstrip().split())) def LSI(): return list(map(str, sys.stdin.readline().rstrip().split())) def GMI(): return list(map(lambda x: int(x) - 1, sys.stdin.readline().rstrip().split())) def kiriage(a, b): return (a+b-1)//b def chmax(DP,i,v): if DP[i] < v: DP[i] = v def chmin(DP,i,v): if DP[i] > v: DP[i] = v N, T = MII() data = [] in_event = defaultdict(list) out_event = defaultdict(list) for i in range(N): l, r, p = MII() data.append((l, r, p)) in_event[l].append(i) out_event[r].append(i) que = [] limit = 2*10**5 DP = [0]*(2*limit + 10) for i in range(0, limit + 1): for idx in in_event[i]: heappush(que, (-data[idx][2], idx)) while que and data[que[0][1]][1] < i: heappop(que) if que: score, idx = que[0] chmax(DP, i + T, DP[i] - score) ans = max(DP) print(ans)