#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<map>
using namespace std;
#define ll long long
const int len=5e3+4;
int sum[len][len];
int main()
{
int n,r;
int i,j;
cin>>n>>r;
int u,v,w;
for(i=0;i<n;++i)
{
scanf("%d%d%d",&u,&v,&w);
sum[u][v]=w;
}
for(i=0;i<=5000;++i)
for(j=0;j<=5000;++j)
{
if(i==0&&j==0) //二维前缀和的构造
continue; //sum[i][j]存的是长为i,宽为j的这个矩形的和
if(i==0) //因为本来求的就是矩形
sum[i][j]+=sum[i][j-1];
else
if(j==0)
sum[i][j]+=sum[i-1][j];
else
sum[i][j]+=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1]; //减去重合的部分
}
int maxm=0;
int t;
for(i=0;i<=5000;++i)
for(j=0;j<=5000;++j) //前缀和又在DP
{
if(j-r<0&&i-r<0)
t=sum[i][j];
else
if(j-r<0)
t=sum[i][j]-sum[i-r][j];
else
if(i-r<0)
t=sum[i][j]-sum[i][j-r];
else
t=sum[i][j]-sum[i][j-r]-sum[i-r][j]+sum[i-r][j-r];
maxm=max(maxm,t);
}
cout<<maxm<<endl;
return 0;
}