#include <bits/stdc++.h>
#define REP(i,n,N) for(int i=(n);i<(int) N;i++)
#define p(s) cout<<(s)<<endl
using namespace std;
const int inf=1e9;

int dp[110][110];
int x[55],y[55],c[55];
int main(){
	int gx,gy,N,F;
	cin>>gx>>gy>>N>>F;
	REP(i,0,N)	cin>>x[i]>>y[i]>>c[i];
	REP(i,0,gx+1) REP(j,0,gy+1) dp[i][j]=inf;
	dp[0][0]=0;
	REP(i,0,gx) REP(j,0,gy)	REP(k,0,N)	{
		if(i+x[k]>gx||i+y[k]>gy) continue;
		dp[i+x[k]][j+y[k]]=min(dp[i+x[k]][j+y[k]],dp[i][j]+c[k]);
	}
	REP(i,0,gx+1) REP(j,0,gy+1){
		if(j>0)dp[i][j]=min(dp[i][j],dp[i][j-1]+F);
		else if(i>0) dp[i][j]=min(dp[i][j],dp[i-1][j]+F);
	}
	p(dp[gx][gy]);
	return 0;
}