#include<bits/stdc++.h>
using namespace std;
int n,m;//物品组数,背包容量
int dp[10000],v[1000][1000],w[1000][1000];//第i个物品组的第j个物品的体积和价值
int a[10000];
int s[10000];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>s[i];
for(int j=1;j<=s[i];j++){
cin>>v[i][j]>>w[i][j];
}
}
for(int i=1;i<=n;i++){//N组物品
for(int j=m;j>=1;j--){//体积
for(int k=0;k<=s[i];k++){//决策
if(j>=v[i][k])
dp[j]=max(dp[j],dp[j-v[i][k]]+w[i][k]);
}
}
}
cout<<dp[m];
return 0;
}