#include <bits/stdc++.h>
using namespace std;
int n,m,k;
int x,y,z;
int Map[5005][5005],CFOfMap[5005][5005];
int Equal0(int X,int Y)
{
return (Map[X-1][Y]+Map[X][Y-1]-Map[X-1][Y-1]+CFOfMap[X][Y]);
}
void SquareDO(int X,int Y,int DoNum)
{
CFOfMap[X][Y]+=DoNum;
CFOfMap[X+k][Y]-=DoNum;
CFOfMap[X][Y+k]-=DoNum;
CFOfMap[X+k][Y+k]+=DoNum;
}
void doit()
{
int NeedTime=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if((i+k>n+1||j+k>n+1)&&Equal0(i,j))
{
printf("-1");
exit(0);
}
if(Equal0(i,j))
{
NeedTime+=abs(Equal0(i,j));
SquareDO(i,j,-Equal0(i,j));
}
Map[i][j]=Equal0(i,j);
}
}
printf("%d",NeedTime);
}
void init()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
Map[x][y]=z;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
CFOfMap[i][j]=Map[i][j]-Map[i-1][j]-Map[i][j-1]+Map[i-1][j-1];
}
}
doit();
}
int main()
{
init();
return 0;
}