#include using namespace std; using ll = long long; using PII = std::pair; using PLL = std::pair; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rep2(i, s, n) for (int i = (s); i < (int)(n); i++) int main() { #ifdef DEBUG cout << "DEBUG MODE" << endl; ifstream in("input.txt"); //for debug cin.rdbuf(in.rdbuf()); //for debug #endif int gx, gy, n, f, x, y, c; cin >> gx >> gy >> n >> f; int cost[gy + 1][gx + 1], new_cost[gy + 1][gx + 1]; rep(i, gy + 1) rep(j, gx + 1) cost[i][j] = (i + j) * f; rep(i, n) { rep(i, gy + 1) rep(j, gx + 1) new_cost[i][j] = cost[i][j]; cin >> x >> y >> c; rep(i, gy + 1) rep(j, gx + 1) if (0 <= i + y && i + y <= gy && 0 <= j + x && j + x <= gx) new_cost[i + y][j + x] = min(new_cost[i + y][j + x], cost[i][j] + c); rep(i, gy + 1) rep(j, gx + 1) cost[i][j] = new_cost[i][j]; } // rep(i, gy + 1) // { // rep(j, gx + 1) // cout << cost[i][j] << " "; // cout << endl; // } cout << cost[gy][gx] << "\n"; return 0; }