#include <bits/stdc++.h>
using namespace std;
int a[5006][5006],b[5006][5006],c[5006][5006];
struct objec{
int x,y,value;
}ob[10006];
int main() {
int n,m;
scanf("%d%d", &n,&m);
for(int i = 1; i <= n; i++) {
scanf("%d%d%d", &ob[i].x,&ob[i].y,&ob[i].value);
ob[i].x++;ob[i].y++;
a[ob[i].y][ob[i].x] += ob[i].value;
}
b[1][1] = a[1][1];
for(int i = 1; i <= 5005; i++) {
for(int j = 2; j <= 5005; j++) {
b[i][j] = b[i-1][j] + b[i][j-1] - b[i-1][j-1] + a[i][j];
}
}
int maxx = 0;
c[1][1] = a[1][1];
for(int i = m; i <= 5005; i++) {
for(int j = m; j <= 5005; j++) {
c[i][j] = b[i][j] - b[i-m][j] - b[i][j-m] + b[i-m][j-m];
if(maxx < c[i][j]) maxx = c[i][j];
}
}
printf("%d", maxx);
return 0;
}