//#pragma GCC optimize("O3", "unroll-loops")
//#pragma GCC target("avx2", "bmi", "bmi2", "lzcnt", "popcnt")
#include <bits/stdc++.h>
#define ldb long double
//#define double ldb
#define db double
#define unomap unordered_map
#define unoset unordered_set
#define endl '\n'
#define str string
#define strstr stringstream
#define sz(a) (int)a.size()
#define ll long long
//#define int ll
#define pii pair <int, int>
#define pll pair <ll, ll>
#define Unique(a) a.resize(unique(all(a)) - a.begin())
#define ull unsigned ll
#define fir first
#define sec second
#define idc cin.ignore()
#define lb lower_bound
#define ub upper_bound
#define all(s) s.begin(), s.end()
#define rev reverse
#define gcd __gcd
#define pushb push_back
#define popb pop_back
#define pushf push_front
#define popf pop_front
#define mul2x(a, x) a << x
#define div2x(a, x) a >> x
#define lcm(a, b) (a / __gcd(a, b) * b)
#define log_base(x, base) log(x) / log(base)
#define debug cerr << "No errors!"; exit(0);
#define forw(i, a, b) for (int i = a; i <= b; ++i)
#define forw2(i, a, b) for (ll i = a; i <= b; ++i)
#define fors(i, a, b) for (int i = a; i >= b; --i)
#define fors2(i, a, b) for (ll i = a; i >= b; --i)
#define pqueue priority_queue
#define sqrt sqrtl
#define i128 __int128
#define popcount __builtin_popcountll
#define BIT(x, i) (((x) >> (i)) & 1)
#define MASK(x) ((1LL) << (x))
#define want_digit(x) cout << fixed << setprecision(x);
#define excuting_time 1000.0 * clock() / CLOCKS_PER_SEC
#define mapa make_pair
using namespace std;
const int MOD = 1e9 + 7; // 998244353
const int inf = 1e9;
const ll INF = 1e18;
const int N = 100;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll random(const ll &L, const ll &R) {
return uniform_int_distribution<ll> (L, R) (rng);
}
template <class X, class Y>
bool maximize(X &x, const Y &y) {
return x < y ? x = y, true : false;
}
int n, delta, a[N * 2 + 5][N * 2 + 5];
pii mx[N * 2 + 5];
ll dp[N * 2 + 5][N * 2 + 5][2];
void sub1() {
forw (i, 1, n) {
dp[1][i][0] = a[1][i];
dp[1][i][0] = mx[1].fir;
}
forw (i, 1, n - 1) {
forw (j, 1, n + i - 1) {
forw (k, 0, 1) {
forw (add, 0, 1) {
int _j = j + add;
maximize(dp[i + 1][_j][k], dp[i][j][k] + a[i + 1][_j]);
if (!k) {
maximize(dp[i + 1][_j][1], dp[i][j][k] + mx[i + 1].fir);
}
}
}
}
}
forw (i, n, 2 * n - 2) {
forw (j, 1, 3 * n - i - 1) {
forw (k, 0, 1) {
forw (add, -1, 0) {
int _j = j + add;
maximize(dp[i + 1][_j][k], dp[i][j][k] + a[i + 1][_j]);
if (!k)
maximize(dp[i + 1][_j][1], dp[i][j][k] + mx[i + 1].fir);
}
}
}
}
ll ans = 0;
forw (i, 1, n) forw (j, 0, 1)
maximize(ans, dp[n * 2 - 1][i][j]);
cout << ans << endl;
}
ll calc(int row, int col1, int col2) {
ll val = mx[row].fir, curr = a[row][col1], tmp = mx[row].sec;
ll s1 = curr + (val != curr ? val : tmp);
curr = a[row][col2];
ll s2 = curr + (val != curr ? val : tmp);
return max(s1, s2);
}
ll f[N * 2 + 5][N * 2 + 5][N * 2 + 5][2];
void sub2() {
forw (i, 1, n - 1) forw (j, i + 1, n) {
f[1][i][j][0] = a[1][i] + a[1][j];
f[1][i][j][1] = calc(1, i, j);
}
forw (i, 1, n - 1) {
int _i = i + 1, lim = n + i - 1;
forw (j, 1, lim) forw (k, j + 1, lim) forw (used, 0, 1) {
forw (add1, 0, 1) forw (add2, 0, 1) {
int _j = j + add1, _k = k + add2;
if (_j >= _k) continue;
maximize(f[_i][_j][_k][used], f[i][j][k][used] + a[_i][_j] + a[_i][_k]);
if (!used)
maximize(f[_i][_j][_k][1], f[i][j][k][0] + calc(_i, _j, _k));
}
}
}
forw (i, n, n * 2 - 2) {
int _i = i + 1, lim = 3 * n - i - 1;
forw (j, 1, lim) forw (k, j + 1, lim) forw (used, 0, 1) {
forw (add1, -1, 0) forw (add2, -1, 0) {
int _j = j + add1, _k = k + add2;
if (_j >= _k) continue;
maximize(f[_i][_j][_k][used], f[i][j][k][used] + a[_i][_j] + a[_i][_k]);
if (!used)
maximize(f[_i][_j][_k][1], f[i][j][k][0] + calc(_i, _j, _k));
}
}
}
ll ans = 0;
forw (i, 1, n) forw (j, 1, n) forw (k, 0, 1) {
maximize(ans, f[n * 2 - 1][i][j][k]);
}
cout << ans << endl;
}
void solve() {
cin >> n >> delta;
forw (i, 1, n * 2 - 1) {
vector <int> curr;
forw (j, 1, (i <= n ? n + i - 1 : 3 * n - i - 1))
cin >> a[i][j], curr.pushb(a[i][j]);
sort(all(curr), greater<int>());
mx[i] = mapa(curr[0], curr[1]);
}
if (delta == 1) sub1();
else sub2();
}
signed main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
srand(time(NULL));
#define name "test"
/*
if (fopen(name".INP", "r")) {
freopen(name".INP", "r", stdin);
freopen(name".OUT", "w", stdout);
}
*/
bool testCase = false;
int numTest = 1;
// cin >> numTest;
forw (i, 1, numTest) {
if (testCase) cout << "Case " << i << ": ";
solve();
}
return 0;
}
Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiTzMiLCAidW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIiLCAiYm1pIiwgImJtaTIiLCAibHpjbnQiLCAicG9wY250IikKCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIGxkYiBsb25nIGRvdWJsZQovLyNkZWZpbmUgZG91YmxlIGxkYgojZGVmaW5lIGRiIGRvdWJsZQojZGVmaW5lIHVub21hcCB1bm9yZGVyZWRfbWFwCiNkZWZpbmUgdW5vc2V0IHVub3JkZXJlZF9zZXQKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBzdHIgc3RyaW5nCiNkZWZpbmUgc3Ryc3RyIHN0cmluZ3N0cmVhbQojZGVmaW5lIHN6KGEpIChpbnQpYS5zaXplKCkKI2RlZmluZSBsbCBsb25nIGxvbmcKLy8jZGVmaW5lIGludCBsbAojZGVmaW5lIHBpaSBwYWlyIDxpbnQsIGludD4KI2RlZmluZSBwbGwgcGFpciA8bGwsIGxsPgojZGVmaW5lIFVuaXF1ZShhKSBhLnJlc2l6ZSh1bmlxdWUoYWxsKGEpKSAtIGEuYmVnaW4oKSkKI2RlZmluZSB1bGwgdW5zaWduZWQgbGwKI2RlZmluZSBmaXIgZmlyc3QKI2RlZmluZSBzZWMgc2Vjb25kCiNkZWZpbmUgaWRjIGNpbi5pZ25vcmUoKQojZGVmaW5lIGxiIGxvd2VyX2JvdW5kCiNkZWZpbmUgdWIgdXBwZXJfYm91bmQKI2RlZmluZSBhbGwocykgcy5iZWdpbigpLCBzLmVuZCgpCiNkZWZpbmUgcmV2IHJldmVyc2UKI2RlZmluZSBnY2QgX19nY2QKI2RlZmluZSBwdXNoYiBwdXNoX2JhY2sKI2RlZmluZSBwb3BiIHBvcF9iYWNrCiNkZWZpbmUgcHVzaGYgcHVzaF9mcm9udAojZGVmaW5lIHBvcGYgcG9wX2Zyb250CiNkZWZpbmUgbXVsMngoYSwgeCkgYSA8PCB4CiNkZWZpbmUgZGl2MngoYSwgeCkgYSA+PiB4CiNkZWZpbmUgbGNtKGEsIGIpIChhIC8gX19nY2QoYSwgYikgKiBiKQojZGVmaW5lIGxvZ19iYXNlKHgsIGJhc2UpIGxvZyh4KSAvIGxvZyhiYXNlKQojZGVmaW5lIGRlYnVnIGNlcnIgPDwgIk5vIGVycm9ycyEiOyBleGl0KDApOwojZGVmaW5lIGZvcncoaSwgYSwgYikgZm9yIChpbnQgaSA9IGE7IGkgPD0gYjsgKytpKQojZGVmaW5lIGZvcncyKGksIGEsIGIpIGZvciAobGwgaSA9IGE7IGkgPD0gYjsgKytpKQojZGVmaW5lIGZvcnMoaSwgYSwgYikgZm9yIChpbnQgaSA9IGE7IGkgPj0gYjsgLS1pKQojZGVmaW5lIGZvcnMyKGksIGEsIGIpIGZvciAobGwgaSA9IGE7IGkgPj0gYjsgLS1pKQojZGVmaW5lIHBxdWV1ZSBwcmlvcml0eV9xdWV1ZQojZGVmaW5lIHNxcnQgc3FydGwKI2RlZmluZSBpMTI4IF9faW50MTI4CiNkZWZpbmUgcG9wY291bnQgX19idWlsdGluX3BvcGNvdW50bGwKI2RlZmluZSBCSVQoeCwgaSkgKCgoeCkgPj4gKGkpKSAmIDEpCiNkZWZpbmUgTUFTSyh4KSAoKDFMTCkgPDwgKHgpKQojZGVmaW5lIHdhbnRfZGlnaXQoeCkgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oeCk7CiNkZWZpbmUgZXhjdXRpbmdfdGltZSAxMDAwLjAgKiBjbG9jaygpIC8gQ0xPQ0tTX1BFUl9TRUMKI2RlZmluZSBtYXBhIG1ha2VfcGFpcgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsgLy8gOTk4MjQ0MzUzCmNvbnN0IGludCBpbmYgPSAxZTk7CmNvbnN0IGxsIElORiA9IDFlMTg7CmNvbnN0IGludCBOID0gMTAwOwoKbXQxOTkzN182NCBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKbGwgcmFuZG9tKGNvbnN0IGxsICZMLCBjb25zdCBsbCAmUikgewogICAgcmV0dXJuIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxsbD4gKEwsIFIpIChybmcpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KYm9vbCBtYXhpbWl6ZShYICZ4LCBjb25zdCBZICZ5KSB7CiAgICByZXR1cm4geCA8IHkgPyB4ID0geSwgdHJ1ZSA6IGZhbHNlOwp9CgppbnQgbiwgZGVsdGEsIGFbTiAqIDIgKyA1XVtOICogMiArIDVdOwpwaWkgbXhbTiAqIDIgKyA1XTsKCmxsIGRwW04gKiAyICsgNV1bTiAqIDIgKyA1XVsyXTsKdm9pZCBzdWIxKCkgewogICAgZm9ydyAoaSwgMSwgbikgewogICAgICAgIGRwWzFdW2ldWzBdID0gYVsxXVtpXTsKICAgICAgICBkcFsxXVtpXVswXSA9IG14WzFdLmZpcjsKICAgIH0KCiAgICBmb3J3IChpLCAxLCBuIC0gMSkgewogICAgICAgIGZvcncgKGosIDEsIG4gKyBpIC0gMSkgewogICAgICAgICAgICBmb3J3IChrLCAwLCAxKSB7CiAgICAgICAgICAgICAgICBmb3J3IChhZGQsIDAsIDEpIHsKICAgICAgICAgICAgICAgICAgICBpbnQgX2ogPSBqICsgYWRkOwogICAgICAgICAgICAgICAgICAgIG1heGltaXplKGRwW2kgKyAxXVtfal1ba10sIGRwW2ldW2pdW2tdICsgYVtpICsgMV1bX2pdKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWspIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW1pemUoZHBbaSArIDFdW19qXVsxXSwgZHBbaV1bal1ba10gKyBteFtpICsgMV0uZmlyKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9ydyAoaSwgbiwgMiAqIG4gLSAyKSB7CiAgICAgICAgZm9ydyAoaiwgMSwgMyAqIG4gLSBpIC0gMSkgewogICAgICAgICAgICBmb3J3IChrLCAwLCAxKSB7CiAgICAgICAgICAgICAgICBmb3J3IChhZGQsIC0xLCAwKSB7CiAgICAgICAgICAgICAgICAgICAgaW50IF9qID0gaiArIGFkZDsKICAgICAgICAgICAgICAgICAgICBtYXhpbWl6ZShkcFtpICsgMV1bX2pdW2tdLCBkcFtpXVtqXVtrXSArIGFbaSArIDFdW19qXSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFrKQogICAgICAgICAgICAgICAgICAgICAgICBtYXhpbWl6ZShkcFtpICsgMV1bX2pdWzFdLCBkcFtpXVtqXVtrXSArIG14W2kgKyAxXS5maXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxsIGFucyA9IDA7CiAgICBmb3J3IChpLCAxLCBuKSBmb3J3IChqLCAwLCAxKQogICAgICAgIG1heGltaXplKGFucywgZHBbbiAqIDIgLSAxXVtpXVtqXSk7CiAgICBjb3V0IDw8IGFucyA8PCBlbmRsOwp9CgpsbCBjYWxjKGludCByb3csIGludCBjb2wxLCBpbnQgY29sMikgewogICAgbGwgdmFsID0gbXhbcm93XS5maXIsIGN1cnIgPSBhW3Jvd11bY29sMV0sIHRtcCA9IG14W3Jvd10uc2VjOwogICAgbGwgczEgPSBjdXJyICsgKHZhbCAhPSBjdXJyID8gdmFsIDogdG1wKTsKICAgIGN1cnIgPSBhW3Jvd11bY29sMl07CiAgICBsbCBzMiA9IGN1cnIgKyAodmFsICE9IGN1cnIgPyB2YWwgOiB0bXApOwogICAgcmV0dXJuIG1heChzMSwgczIpOwp9CgpsbCBmW04gKiAyICsgNV1bTiAqIDIgKyA1XVtOICogMiArIDVdWzJdOwp2b2lkIHN1YjIoKSB7CiAgICBmb3J3IChpLCAxLCBuIC0gMSkgZm9ydyAoaiwgaSArIDEsIG4pIHsKICAgICAgICBmWzFdW2ldW2pdWzBdID0gYVsxXVtpXSArIGFbMV1bal07CiAgICAgICAgZlsxXVtpXVtqXVsxXSA9IGNhbGMoMSwgaSwgaik7CiAgICB9CiAgICAKICAgIGZvcncgKGksIDEsIG4gLSAxKSB7CiAgICAgICAgaW50IF9pID0gaSArIDEsIGxpbSA9IG4gKyBpIC0gMTsKICAgICAgICBmb3J3IChqLCAxLCBsaW0pIGZvcncgKGssIGogKyAxLCBsaW0pIGZvcncgKHVzZWQsIDAsIDEpIHsKICAgICAgICAgICAgZm9ydyAoYWRkMSwgMCwgMSkgZm9ydyAoYWRkMiwgMCwgMSkgewogICAgICAgICAgICAgICAgaW50IF9qID0gaiArIGFkZDEsIF9rID0gayArIGFkZDI7CiAgICAgICAgICAgICAgICBpZiAoX2ogPj0gX2spIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgbWF4aW1pemUoZltfaV1bX2pdW19rXVt1c2VkXSwgZltpXVtqXVtrXVt1c2VkXSArIGFbX2ldW19qXSArIGFbX2ldW19rXSk7CiAgICAgICAgICAgICAgICBpZiAoIXVzZWQpCiAgICAgICAgICAgICAgICAgICAgbWF4aW1pemUoZltfaV1bX2pdW19rXVsxXSwgZltpXVtqXVtrXVswXSArIGNhbGMoX2ksIF9qLCBfaykpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvcncgKGksIG4sIG4gKiAyIC0gMikgewogICAgICAgIGludCBfaSA9IGkgKyAxLCBsaW0gPSAzICogbiAtIGkgLSAxOwogICAgICAgIGZvcncgKGosIDEsIGxpbSkgZm9ydyAoaywgaiArIDEsIGxpbSkgZm9ydyAodXNlZCwgMCwgMSkgewogICAgICAgICAgICBmb3J3IChhZGQxLCAtMSwgMCkgZm9ydyAoYWRkMiwgLTEsIDApIHsKICAgICAgICAgICAgICAgIGludCBfaiA9IGogKyBhZGQxLCBfayA9IGsgKyBhZGQyOwogICAgICAgICAgICAgICAgaWYgKF9qID49IF9rKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIG1heGltaXplKGZbX2ldW19qXVtfa11bdXNlZF0sIGZbaV1bal1ba11bdXNlZF0gKyBhW19pXVtfal0gKyBhW19pXVtfa10pOwogICAgICAgICAgICAgICAgaWYgKCF1c2VkKQogICAgICAgICAgICAgICAgICAgIG1heGltaXplKGZbX2ldW19qXVtfa11bMV0sIGZbaV1bal1ba11bMF0gKyBjYWxjKF9pLCBfaiwgX2spKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsbCBhbnMgPSAwOwogICAgZm9ydyAoaSwgMSwgbikgZm9ydyAoaiwgMSwgbikgZm9ydyAoaywgMCwgMSkgewogICAgICAgIG1heGltaXplKGFucywgZltuICogMiAtIDFdW2ldW2pdW2tdKTsKICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbiA+PiBkZWx0YTsKICAgIGZvcncgKGksIDEsIG4gKiAyIC0gMSkgewogICAgICAgIHZlY3RvciA8aW50PiBjdXJyOwogICAgICAgIGZvcncgKGosIDEsIChpIDw9IG4gPyBuICsgaSAtIDEgOiAzICogbiAtIGkgLSAxKSkKICAgICAgICAgICAgY2luID4+IGFbaV1bal0sIGN1cnIucHVzaGIoYVtpXVtqXSk7CiAgICAgICAgc29ydChhbGwoY3VyciksIGdyZWF0ZXI8aW50PigpKTsKICAgICAgICBteFtpXSA9IG1hcGEoY3VyclswXSwgY3VyclsxXSk7CiAgICB9CgogICAgaWYgKGRlbHRhID09IDEpIHN1YjEoKTsKICAgIGVsc2Ugc3ViMigpOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKTsKICAgIHNyYW5kKHRpbWUoTlVMTCkpOwogICAgI2RlZmluZSBuYW1lICJ0ZXN0IgogICAgLyoKICAgIGlmIChmb3BlbihuYW1lIi5JTlAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbihuYW1lIi5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKG5hbWUiLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgICovCiAgICBib29sIHRlc3RDYXNlID0gZmFsc2U7CiAgICBpbnQgbnVtVGVzdCA9IDE7Ci8vICAgIGNpbiA+PiBudW1UZXN0OwogICAgZm9ydyAoaSwgMSwgbnVtVGVzdCkgewogICAgICAgIGlmICh0ZXN0Q2FzZSkgY291dCA8PCAiQ2FzZSAiIDw8IGkgPDwgIjogIjsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K