#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=4000;
int n,m,k,t,ans=-1e16,a[N+5][N+5],dp[N+5][N+5],qu[N+5][N+5];
void que(int x){
queue<int> q;
int head=1,tail=0;
q.push(dp[x][1]);
while(tail<m){
if(head<=m){
head++;
}
else{
tail++;
}
while(!q.empty()&&head-tail>2*t+1){
tail++;
q.pop();
}
while(!q.empty()&&q.front()<=dp[x][head]){
tail++;
q.pop();
}
q.push(dp[x][head]);
qu[x+1][head-1]=q.front();
}
}
signed 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<=n;i++){
que(i-1);
for(int j=1;j<=m;j++){
dp[i][j]=a[i][j]+qu[i][j];
}
}
for(int i=1;i<=n;i++){
ans=max(ans,dp[n][i]);
}
cout<<ans<<endl;
return 0;
}