#include<bits/stdc++.h> using namespace std; int N,V,S[106],dp[106][10006]; struct Node{ vector<int> v,w; }a[106]; int main(){ ios::sync_with_stdio(false); cin.tie(0); //1906 1889 cin>>N>>V; for(int i=1;i<=N;i++){ cin>>S[i]; for(int j=1,v,w;j<=S[i];j++){ cin>>v>>w; a[i].v.push_back(v);a[i].w.push_back(w); } } for(int i=1;i<=N;i++){ for(int j=0;j<=S[i]-1;j++){ for(int k=a[i].v[j];k<=V;k++){ dp[i][k]=max(dp[i-1][k],dp[i-1][k-a[i].v[j]]+a[i].w[j]); } } } cout<<dp[N][V]; return 0; } /************************************************************** Problem: 1906 User: chenxurui Language: C++ Result: Wrong Answer ****************************************************************/