from bisect import * N, B = map(int, input().split()) XYP = [tuple(map(int, input().split())) for _ in range(N)] XYP.sort(key=lambda k: k[0]) ans = 0 for i in range(N): Xi, _, _ = XYP[i] for j in range(i, N): Xj, _, _ = XYP[j] YP = [] for k in range(N): Xk, Yk, Pk = XYP[k] if Xi<=Xk<=Xj: YP.append((Yk, Pk)) YP.sort(key=lambda k: k[0]) YP += [('a', 'a')] cnt = [] point = [] c = 0 p = 0 for i in range(len(YP)-1): c += 1 p += YP[i][1] if YP[i][0]!=YP[i+1][0]: cnt.append(c) point.append(p) c = 0 p = 0 c_acc = [0] p_acc = [0] for cnt_i in cnt: c_acc.append(c_acc[-1]+cnt_i) for point_i in point: p_acc.append(p_acc[-1]+point_i) for k in range(len(c_acc)): mark = bisect_right(p_acc, p_acc[k]+B) ans = max(ans, c_acc[mark-1]-c_acc[k]) print(ans)