gx, gy, n, f = map(int,raw_input().split()) inf = float("inf") dp = [[inf for i in range(gx+1)] for i in range(gy+1)]; dp[0][0] = 0 arr = [map(int,raw_input().split()) for i in range(n)] for i in range(gy + 1): for j in range(gx + 1): dp[i][j] = min(dp[i][j], (dp[i-1][j] + f) if i-1 > -1 else inf, (dp[i][j-1] + f) if j-1 > -1 else inf) for x,y,cost in arr: for i in range(gy + 1): for j in range(gx + 1): dx = j + x; dy = i + y if -1 < dx < gx + 1 and -1 < dy < gy + 1 : dp[dy][dx] = min(dp[i][j] + cost, dp[dy][dx]) print dp[gy][gx]