#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int f[N], backup[N];
int n, m;
int main(){
scanf("%d%d", &n, &m);
for(int i = 0; i < n; ++ i){
int s, w, v;
scanf("%d", &s);
memcpy(backup, f, sizeof f); //防止串联
for(int j = 0; j < s; ++ j){
scanf("%d%d", &w, &v);
for(int k = m; k >= w; -- k){
f[k] = max(f[k], backup[k - w] + v);
}
}
}
printf("%d", f[m]);
return 0;
}