#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
using namespace std;
int instnum[110];
int cost[110];
int dp[110][10010];
int sat[110][11] = {};
int acc[110][11] = {};
int main(){
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> cost[i] >> instnum[i];
for (int j = 1; j <= instnum[i]; j++) {
cin >> sat[i][j];
acc[i][j] = acc[i][j - 1] + sat[i][j];
}
for (int j = instnum[i] + 1; j <= 10; j++)
acc[i][j] = acc[i][j - 1];
}
for (int i = 0; i <= m; i++) {
dp[0][i] = acc[0][i / cost[0]];
}
for (int i = 1; i < n; i++) {
for (int j = 0; j <= m; j++) {
dp[i][j] = dp[i - 1][j];
for (int k = 0; k <= j / cost[i]; k++) {
dp[i][j] = max(
dp[i][j],
dp[i - 1][j - cost[i] * k] + acc[i][k]);
}
}
}
cout << dp[n - 1][m];
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxxdWV1ZT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgaW5zdG51bVsxMTBdOwppbnQgY29zdFsxMTBdOwppbnQgZHBbMTEwXVsxMDAxMF07CmludCBzYXRbMTEwXVsxMV0gPSB7fTsKaW50IGFjY1sxMTBdWzExXSA9IHt9OwoKCmludCBtYWluKCl7CglpbnQgbiwgbTsKCWNpbiA+PiBuID4+IG07CgkKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJY2luID4+IGNvc3RbaV0gPj4gaW5zdG51bVtpXTsKCQlmb3IgKGludCBqID0gMTsgaiA8PSBpbnN0bnVtW2ldOyBqKyspIHsKCQkJY2luID4+IHNhdFtpXVtqXTsKCQkJYWNjW2ldW2pdID0gYWNjW2ldW2ogLSAxXSArIHNhdFtpXVtqXTsKCQl9CgkJZm9yIChpbnQgaiA9IGluc3RudW1baV0gKyAxOyBqIDw9IDEwOyBqKyspCgkJCWFjY1tpXVtqXSA9IGFjY1tpXVtqIC0gMV07Cgl9CgoJZm9yIChpbnQgaSA9IDA7IGkgPD0gbTsgaSsrKSB7CgkJZHBbMF1baV0gPSBhY2NbMF1baSAvIGNvc3RbMF1dOwoJfQoJZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspIHsKCQlmb3IgKGludCBqID0gMDsgaiA8PSBtOyBqKyspIHsKCQkJZHBbaV1bal0gPSBkcFtpIC0gMV1bal07CgkJCWZvciAoaW50IGsgPSAwOyBrIDw9IGogLyBjb3N0W2ldOyBrKyspIHsKCQkJCWRwW2ldW2pdID0gbWF4KAoJCQkJCWRwW2ldW2pdLAoJCQkJCWRwW2kgLSAxXVtqIC0gY29zdFtpXSAqIGtdICsgYWNjW2ldW2tdKTsKCQkJfQoJCX0KCX0KCgljb3V0IDw8IGRwW24gLSAxXVttXTsKfQ==