#include #define rep(i,n) for(int i = 0; i < (n); i++) using namespace std; typedef long long ll; int main(){ cin.tie(0); ios::sync_with_stdio(0); int Gx, Gy, N, F; cin >> Gx >> Gy >> N >> F; vector> dp(Gx + 1, vector(Gy + 1, 1e9)); dp[0][0] = 0; rep(_,N) { int xi,yi,ci; cin >> xi >> yi >> ci; vector> nt = dp; for(int x = 0; x <= Gx; x++) for(int y = 0; y <= Gy; y++) if(x + xi <= Gx && y + yi <= Gy) nt[x + xi][y + yi] = min(nt[x + xi][y + yi], dp[x][y] + ci); swap(dp, nt); } int ans = 1e9; for(int x = 0; x <= Gx; x++) for(int y = 0; y <= Gy; y++) ans = min(ans, dp[x][y] + (Gx - x) * F + (Gy - y) * F); cout << ans << endl; }