import sys def solve(): Gx, Gy, N, F = map(int, input().split()) x, y, c = [], [], [] for i in range(N): xi, yi, ci = map(int, input().split()) x.append(xi) y.append(yi) c.append(ci) dp = [[0] * (Gx + 1) for i in range(Gy + 1)] for i in range(Gy + 1): for j in range(Gx + 1): dp[i][j] = (i + j) * F for i in range(N): for rr in range(Gy, y[i] - 1, -1): for cc in range(Gx, x[i] - 1, -1): dp[rr][cc] = min(dp[rr][cc], dp[rr - y[i]][cc - x[i]] + c[i]) print(dp[Gy][Gx]) def debug(x, table): for name, val in table.items(): if x is val: print('DEBUG:{} -> {}'.format(name, val), file=sys.stderr) return None if __name__ == '__main__': solve()