#include<stdio.h> #include<string.h> int dp[101][101][101][6],a1[101],a2[101],cont[101]; int max(int a,int b) { if(a>b)return a; else return b; } int main() { int i,j,p,e,k,n,m,v1,v2; while(scanf("%d%d%d%d",&n,&v1,&v2,&k)!=EOF) { for(i=1;i<=n;i++) { scanf("%d%d%d",&a1[i],&a2[i],&cont[i]); } memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) for(j=0;j<=v1;j++) for(p=0;p<=v2;p++) for(e=0;e<=k;e++) { dp[i][j][p][e]=dp[i-1][j][p][e]; if(j>=a1[i]) { dp[i][j][p][e]=max(dp[i][j][p][e],dp[i-1][j-a1[i]][p][e]+cont[i]); } if(p>=a2[i]) { dp[i][j][p][e]=max(dp[i][j][p][e],dp[i-1][j][p-a2[i]][e]+cont[i]); } if(e>0) { dp[i][j][p][e]=max(dp[i][j][p][e],dp[i-1][j][p][e-1]+cont[i]); } } printf("%d\n",dp[n][v1][v2][k]); } return 0; }