#include using namespace std; #define rep(i,a,b) for(int i=a;i> GX >> GY >> N >> F; rep(i, 0, N) cin >> X[i] >> Y[i] >> C[i]; rep(i, 0, N) if ((X[i] + Y[i]) * F < C[i]) C[i] = (X[i] + Y[i]) * F; rep(i, 0, N + 1) rep(y, 0, GY + 1) rep(x, 0, GX + 1) dp[i][y][x] = INF; dp[0][0][0] = 0; rep(i, 0, N) rep(y, 0, GY + 1) rep(x, 0, GX + 1) { dp[i + 1][y][x] = min(dp[i + 1][y][x], dp[i][y][x]); int xx = x + X[i]; int yy = y + Y[i]; if (GX < xx) continue; if (GY < yy) continue; dp[i + 1][yy][xx] = min(dp[i + 1][yy][xx], dp[i][y][x] + C[i]); } int ans = INF; rep(y, 0, GY + 1) rep(x, 0, GX + 1) { int c = ((GY - y) + (GX - x)) * F + dp[N][y][x]; ans = min(ans, c); } cout << ans << endl; }