#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 100;
int n, x, a[maxn+5][maxn+5];
ll dp[maxn+5]; //diem khi dung i ngay
void read() {
cin >> n >> x;
for (int i = 1; i<=n; ++i) {
for (int j = 1; j<=x; ++j) cin >> a[i][j];
}
}
void dequy(vector <int> v, int & res) {
if (v.size() == n) {
int days = 0;
for (int val : v) days += val;
int cur = 0;
if (days <= x) {
for (int i = 0; i<n; ++i) {
cur += a[i+1][v[i]];
}
res = max(res, cur);
}
return;
}
for (int i = 0; i<=x; ++i) {
v.push_back(i);
dequy(v, res);
v.pop_back();
}
}
void sub1() {
vector <int> v;
int res = 0;
dequy(v, res);
cout << res;
}
void sub2() {
int res = 0;
for (int i = 1; i<=n; ++i) {
res = max(res, a[i][1]);
}
cout << res;
}
void sub3() {
for (int i = 1; i<=n; ++i) {
ll new_dp[maxn+5];
for (int j = 0; j<=x; ++j) new_dp[j] = 0;
for (int g = 0; g<=x; ++g) {
for (int h = 0; h<=g; ++h) {
new_dp[g] = max(new_dp[g], 1LL * dp[g-h] + a[i][h]);
}
}
for (int j = 0; j<=x; ++j) dp[j] = new_dp[j];
}
ll res = 0;
for (int i = 0; i<=x; ++i) res = max(res, dp[i]);
cout << res;
}
void solve() {
if (n <= 4 && x <= 4) sub1();
else if (x == 1) sub2();
else sub3();
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
read();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBpbnQgbWF4biA9IDEwMDsKaW50IG4sIHgsIGFbbWF4bis1XVttYXhuKzVdOwpsbCBkcFttYXhuKzVdOyAvL2RpZW0ga2hpIGR1bmcgaSBuZ2F5CnZvaWQgcmVhZCgpIHsKICAgIGNpbiA+PiBuID4+IHg7CiAgICBmb3IgKGludCBpID0gMTsgaTw9bjsgKytpKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGo8PXg7ICsraikgY2luID4+IGFbaV1bal07CiAgICB9Cn0Kdm9pZCBkZXF1eSh2ZWN0b3IgPGludD4gdiwgaW50ICYgcmVzKSB7CiAgICBpZiAodi5zaXplKCkgPT0gbikgewogICAgICAgIGludCBkYXlzID0gMDsKICAgICAgICBmb3IgKGludCB2YWwgOiB2KSBkYXlzICs9IHZhbDsKICAgICAgICBpbnQgY3VyID0gMDsKICAgICAgICBpZiAoZGF5cyA8PSB4KSB7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpPG47ICsraSkgewogICAgICAgICAgICAgICAgY3VyICs9IGFbaSsxXVt2W2ldXTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXMgPSBtYXgocmVzLCBjdXIpOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CiAgICBmb3IgKGludCBpID0gMDsgaTw9eDsgKytpKSB7CiAgICAgICAgdi5wdXNoX2JhY2soaSk7CiAgICAgICAgZGVxdXkodiwgcmVzKTsKICAgICAgICB2LnBvcF9iYWNrKCk7CiAgICB9Cn0Kdm9pZCBzdWIxKCkgewogICAgdmVjdG9yIDxpbnQ+IHY7CiAgICBpbnQgcmVzID0gMDsKICAgIGRlcXV5KHYsIHJlcyk7CiAgICBjb3V0IDw8IHJlczsKfQp2b2lkIHN1YjIoKSB7CiAgICBpbnQgcmVzID0gMDsKICAgIGZvciAoaW50IGkgPSAxOyBpPD1uOyArK2kpIHsKICAgICAgICByZXMgPSBtYXgocmVzLCBhW2ldWzFdKTsKICAgIH0KICAgIGNvdXQgPDwgcmVzOwp9CnZvaWQgc3ViMygpIHsKICAgIGZvciAoaW50IGkgPSAxOyBpPD1uOyArK2kpIHsKICAgICAgICBsbCBuZXdfZHBbbWF4bis1XTsKICAgICAgICBmb3IgKGludCBqID0gMDsgajw9eDsgKytqKSBuZXdfZHBbal0gPSAwOwoKICAgICAgICBmb3IgKGludCBnID0gMDsgZzw9eDsgKytnKSB7CiAgICAgICAgICAgIGZvciAoaW50IGggPSAwOyBoPD1nOyArK2gpIHsKICAgICAgICAgICAgICAgIG5ld19kcFtnXSA9IG1heChuZXdfZHBbZ10sIDFMTCAqIGRwW2ctaF0gKyBhW2ldW2hdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGo8PXg7ICsraikgZHBbal0gPSBuZXdfZHBbal07CiAgICB9CiAgICBsbCByZXMgPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGk8PXg7ICsraSkgcmVzID0gbWF4KHJlcywgZHBbaV0pOwogICAgY291dCA8PCByZXM7Cn0Kdm9pZCBzb2x2ZSgpIHsKICAgIGlmIChuIDw9IDQgJiYgeCA8PSA0KSBzdWIxKCk7CiAgICBlbHNlIGlmICh4ID09IDEpIHN1YjIoKTsKICAgIGVsc2Ugc3ViMygpOwp9CmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIHJlYWQoKTsKICAgIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQo=