INF = 10 ** 10 gx, gy, n, f = map(int,input().split(' ')) x = [0] * n y = [0] * n c = [0] * n for i in range(n): x[i], y[i], c[i] = map(int,input().split(' ')) dp = [[INF] * (gx+1) for i in range(gy+1)] dp[0][0] = 0 for k in range(n): for i in range(gy+1)[::-1]: for j in range(gx+1)[::-1]: if i+y[k] <= gy and j+x[k] <= gx: dp[i+y[k]][j+x[k]] = min(dp[i+y[k]][j+x[k]],dp[i][j]+c[k]) ans = f * (gx + gy) for k in range(n): for i in range(gy+1): for j in range(gx+1): ans = min(ans,dp[i][j]+f*(gy-i+gx-j)) print(ans)