#include<bits/stdc++.h>
using namespace std;
int n,m,k,t;
int a[4001][4001];
int f[4001][4001];
deque<int> q;
int main(){
cin>>n>>m>>k>>t;
for(int i=1;i<=k;i++){
int x,y,v;
cin>>x>>y>>v;
a[x][y]=v;
}
for(int i=1;i<=m;i++){
f[1][i]=a[1][i];
}
for(int i=2;i<=n;i++){
q.clear();
for(int j=1;j<=min(m,t);j++){
while(!q.empty() && f[i-1][q.back()]<f[i-1][j+t])
q.pop_back();
q.push_back(j);
}
for(int j=1;j<=m;j++){
if(!q.empty() && j-q.front()>t){
q.pop_front();
}
if(j+t<=m){
while(!q.empty() && f[i-1][q.back()]<f[i-1][j+t])
q.pop_back();
q.push_back(j+t);
}
f[i][j]=f[i-1][q.front()]+a[i][j];
}
}
int ans=0;
for(int i=1;i<=m;i++){
ans=max(ans,f[n][i]);
}
cout<<ans;
return 0;
}