gx,gy,N,F = map(int,input().split()) lsxyz = [list(map(int,input().split())) for i in range(N)] inf = float('INF') dp = [[inf]*(gy+1) for i in range(gx+1)] dp[0][0] = 0 for i in range(N): x,y,z = lsxyz[i] dp2 = [[inf]*(gy+1) for i in range(gx+1)] for j in range(gx+1): for k in range(gy+1): if 0 <=j-x and 0 <=k-y: dp2[j][k] = min(dp[j][k],dp[j-x][k-y]+z) else: dp2[j][k] = dp[j][k] dp = dp2 for i in range(gx+1): for j in range(gy+1): if 0<=i-1: dp[i][j] = min(dp[i-1][j]+F,dp[i][j]) if 0<=j-1: dp[i][j] = min(dp[i][j-1]+F,dp[i][j]) print(dp[-1][-1])