1 #include<cstdio>
2 #include<cstring>
3 #include<iostream>
4 #include<algorithm>
5 using namespace std;
6 int n,v,p,g,gp,pv;
7 int dp[55][100010];
8 int main(){
9 int i,j,k;
10 //freopen("vidgame.in","r",stdin);
11 //freopen("vidgame.out","w",stdout);
12 scanf("%d%d",&n,&v);
13 memset(dp,0,sizeof(dp));
14 for(i=1;i<=n;i++)
15 {
16 scanf("%d%d",&p,&g);
17 for(j=p;j<=v;j++)dp[i][j]=dp[i-1][j-p];//买了i个平台剩下j元 (j-p)为买其他剩的钱
18 for(j=1;j<=g;j++)//每种游戏
19 {
20 scanf("%d%d",&gp,&pv);
21 for(k=v;k>=p+gp;k--) dp[i][k]=max(dp[i][k],dp[i][k-gp]+pv);//01
22 }
23 for(j=0;j<=v;j++) dp[i][j]=max(dp[i][j],dp[i-1][j]);//重新判断一次
24 }
25 printf("%d",dp[n][v]);
26 return 0;
27 }