#include int minim(int x,int y){if(x < y){return x;}return y;} int main(void){ int dp[128][128]; int gx,gy,n,f; int x,y,c; int t,i,j,jud; scanf("%d%d%d%d",&gx,&gy,&n,&f); for(i = 0;i <= 127;i++){ for(j = 0;j <= 127;j++){ dp[i][j] = f*(i+j); } } for(t = 1;t <= n;t++){ scanf("%d%d%d",&x,&y,&c); for(i = 127;i >= 0;i--){ for(j = 127;j >= 0;j--){ if(i+x <= 127 && j+y <= 127){ dp[i+x][j+y] = minim(dp[i+x][j+y],dp[i][j]+c); } } } for(i = 0;i <= 127;i++){ for(j = 0;j <= 127;j++){ if(i == 0){jud = dp[i][j-1];} else if(j == 0){jud = dp[i-1][j];} else{jud = minim(dp[i][j-1],dp[i-1][j]);} dp[i][j] = minim(dp[i][j],jud+f); } } } printf("%d\n",dp[gx][gy]); return 0; }