#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=1;k<=V;k++){ //cout<<max(dp[i-1][k],dp[i][k])<<" "<<i<<" "<<k<<"\n"; if(k>=a[i].v[j]) dp[i][k]=max(max(dp[i-1][k],dp[i-1][k-a[i].v[j]]+a[i].w[j]),dp[i][k]); else dp[i][k]=max(dp[i-1][k],dp[i][k]); } //cout<<endl; } } cout<<dp[N][V]; return 0; } /************************************************************** Problem: 1906 User: chenxurui Language: C++ Result: Accepted Time:95 ms Memory:6512 kb ****************************************************************/