R=xrange;I=lambda:map(int,raw_input().split()) Gx,Gy,N,F=I() assert 0 <= Gx <= 100 assert 0 <= Gy <= 100 assert 0 <= N <= 50 assert 1 <= F <= 200 dp=[[F*(i+j) for j in R(Gx+1)]for i in R(Gy+1)] for t in R(N): x,y,c = I() assert 0 <= x <= Gx assert 0 <= y <= Gy assert (x,y) != (0,0) assert 1 <= c <= 200 for i in R(Gy,y-1,-1): for j in R(Gx,x-1,-1): dp[i][j]=min(dp[i][j],dp[i-y][j-x]+c) print dp[Gy][Gx]