#include #include #include #include #include using namespace std; int DP[51][51]; int main() { int Gx, Gy, N, F;cin >> Gx >> Gy >> N >> F; vectorx(N), y(N), c(N); for (int i = 0;i < N;i++) { cin >> x[i] >> y[i] >> c[i]; } map, int>M; M[make_pair(0, 0)] = 0; for (int i = 0;i < N;i++) { for (auto itr = M.begin();itr != M.end();itr++) { pair pos = itr->first; pos.first += x[i];pos.second += y[i]; if (pos.first > Gx || pos.second > Gy)continue; if (M.find(pos) == M.end())M[pos] = itr->second + c[i]; else M[pos] = min(M[pos], itr->second + c[i]); } } int ans = 1e8; for (auto itr = M.begin();itr != M.end();itr++) { ans = min(ans, itr->second + F*abs(itr->first.first - Gx) + F*abs(itr->first.second - Gy)); } cout << ans << endl; return 0; }