#include <cstdio>
#include <algorithm>
#define INF 0x2f2f2f2f
const int MAXM=101,MAXR=101,MAXN=101;
using namespace std;
int dp[MAXM][MAXR],res[MAXM][MAXR];
struct girl {
int rmb,rp,t;
girl():rmb(0),rp(0),t(0){}
};
girl a[MAXN];
int main() {
int n,m,r;
scanf("%d",&n);
for(int i=1; i<=n; i++) {
scanf("%d%d%d",&a[i].rmb,&a[i].rp,&a[i].t);
}
scanf("%d%d",&m,&r);
/* for(int i=1; i<=m; i++) {
for(int j=1; j<=r; j++) res[i][j]=INF;
}为何不能加上?*/
for(int i=1; i<=n; i++) {
for(int j=m; j>=a[i].rmb; j--) {
for(int k=r; k>=a[i].rp; k--) {
girl now=a[i];
if(dp[j-now.rmb][k-now.rp]+1>dp[j][k]) { //如果选了之后数量更多,那么就选
dp[j][k]=dp[j-now.rmb][k-a[i].rp]+1;
res[j][k]=res[j-now.rmb][k-a[i].rp]+now.t; //注意要选上!
}
else if(dp[j-a[i].rmb][k-now.rp]+1==dp[j][k]) {
res[j][k]=min(res[j][k],res[j-now.rmb][k-now.rp]+now.t);
}
}
}
}
printf("%d",res[m][r]);
return 0;
}