#include <iostream>#include <iomanip>#include <sstream>#include <string>#include <cstdio>#include <algorithm>#include <cstring>#include <cctype>#include <cmath>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <bitset>using namespace std;#define REP(i,n) for(int i = 0; i < (n); ++i)int a[200], b[200], c[200], d[200], s[200], bit[200];int g[200][1<<8];int f[6][6][6][6][6][6][6];int cal(int i0, int i1, int i2, int i3, int i4, int i5, int i6){ int s = i0*c[0]+i1*c[1]+i2*c[2]+i3*c[3]+i4*c[4]+i5*c[5]+i6*c[6]; if (i0==b[0]) s+=d[0]; if (i1==b[1]) s+=d[1]; if (i2==b[2]) s+=d[2]; if (i3==b[3]) s+=d[3]; if (i4==b[4]) s+=d[4]; if (i5==b[5]) s+=d[5]; if (i6==b[6]) s+=d[6]; return s;};int ans=0;int update(int &a, int b) { if (a<b) a=b; if (a>ans) ans=a;}int main(){ int k, n; while (scanf("%d%d", &k, &n) != EOF) { memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c)); memset(d, 0, sizeof(d)); for (int i = 0; i < k; ++i) scanf("%d%d%d", &b[i], &c[i], &d[i]); for (int i = 0; i < n; ++i) { int m, x; scanf("%d%d", &a[i], &m); s[i] = 0; for (int j = 0; j < m; ++j) { scanf("%d", &x); --x; s[i] |= (1 << x); } } int X, Y; scanf("%d%d", &X, &Y); memset(g, -1, sizeof(g)); g[0][0] = 0; int ALL = (1 << k) - 1; for (int i = 0; i < n; ++i) for (int j = Y; j >= 1; --j) { for (int S = ALL; S >= 0 ; --S) { if (g[j-1][S] < 0) continue; int S0 = (S | s[i]); g[j][S0] = max(g[j][S0], g[j-1][S] + a[i]); } } for (int S = ALL; S >= 0 ; --S) { for (int j = Y; j >= 1; --j) g[0][S] = max(g[0][S], g[j][S]); } ans = 0; memset(bit, 0, sizeof(bit)); memset(f, 0, sizeof(f)); for (int i=0; i<= ALL; i++) { if (g[0][i] < 0) continue; for (int j=0; j<k; j++) bit[j] = ((1<<j) & i)>0; for (int i0=0; i0<=b[0]-bit[0]; i0++) for (int i1=0; i1<=b[1]-bit[1]; i1++) for (int i2=0; i2<=b[2]-bit[2]; i2++) for (int i3=0; i3<=b[3]-bit[3]; i3++) for (int i4=0; i4<=b[4]-bit[4]; i4++) for (int i5=0; i5<=b[5]-bit[5]; i5++) for (int i6=0; i6<=b[6]-bit[6]; i6++) if (i0+i1+i2+i3+i4+i5+i6 <= X) update( f[i0+bit[0]] [i1+bit[1]] [i2+bit[2]] [i3+bit[3]] [i4+bit[4]] [i5+bit[5]] [i6+bit[6]], cal(i0+bit[0], i1+bit[1], i2+bit[2], i3+bit[3], i4+bit[4], i5+bit[5], i6+bit[6]) + g[0][i] ); } cout<< ans<< endl; } return 0;}