#include <iostream>
using namespace std;
#define R 4
#define C 4
#define MIN -1000000000
static int grid[R][C] = {
{0,23,20,-32},
{13,14,44,-44},
{23,19,41,9},
{46,27,20,0}
};
static int memo[R][C] = {
{MIN,MIN,MIN,MIN},
{MIN,MIN,MIN,MIN},
{MIN,MIN,MIN,MIN},
{MIN,MIN,MIN,MIN}
};
int solve(int r, int c) {
if(memo[r][c] != MIN) return memo[r][c];
int res = grid[r][c];
int a = 0, b = 0;
if (r+1 != R) a= solve(r+1, c);
if (c+1 != C) b= solve(r, c+1);
res = max(res+a, res+b);
return memo[r][c] = res;
}
int main() {
int add[R][C] = {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
for (int r = 0 ; r != R ; r++) {
for (int c = 0 ; c != C ; c++) {
if (grid[r][c] < 0) {
for (int dr = -1; dr <= 1 ; dr++) {
for (int dc = -1 ; dc <= 1 ; dc++) {
if ((!dr || !dc) && r+dr >= 0 && r+dr < R && c+dc >= 0 && c+dc < C) {
add[r+dr][c+dc] += grid[r][c];
}
}
}
grid[r][c] = MIN;
}
}
}
for (int r = 0 ; r != R ; r++) {
for (int c = 0 ; c != C ; c++) {
grid[r][c] += add[r][c];
}
}
cout << solve(0, 0) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgUiA0CiNkZWZpbmUgQyA0CiNkZWZpbmUgTUlOIC0xMDAwMDAwMDAwCgpzdGF0aWMgaW50IGdyaWRbUl1bQ10gPSB7CnswLDIzLDIwLC0zMn0sCnsxMywxNCw0NCwtNDR9LAp7MjMsMTksNDEsOX0sCns0NiwyNywyMCwwfQp9OwoKc3RhdGljIGludCBtZW1vW1JdW0NdID0gewogICAge01JTixNSU4sTUlOLE1JTn0sCiAgICB7TUlOLE1JTixNSU4sTUlOfSwKICAgIHtNSU4sTUlOLE1JTixNSU59LAogICAge01JTixNSU4sTUlOLE1JTn0KfTsKCmludCBzb2x2ZShpbnQgciwgaW50IGMpIHsKICAgIGlmKG1lbW9bcl1bY10gIT0gTUlOKSByZXR1cm4gbWVtb1tyXVtjXTsKICAgIGludCByZXMgPSBncmlkW3JdW2NdOwogICAgaW50IGEgPSAwLCBiID0gMDsKICAgIGlmIChyKzEgIT0gUikgYT0gc29sdmUocisxLCBjKTsKICAgIGlmIChjKzEgIT0gQykgYj0gc29sdmUociwgYysxKTsgCiAgICByZXMgPSBtYXgocmVzK2EsIHJlcytiKTsKICAgIHJldHVybiBtZW1vW3JdW2NdID0gcmVzOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBhZGRbUl1bQ10gPSB7ezAsMCwwLDB9LHswLDAsMCwwfSx7MCwwLDAsMH0sezAsMCwwLDB9fTsKICAgIGZvciAoaW50IHIgPSAwIDsgciAhPSBSIDsgcisrKSB7CiAgICAgICAgZm9yIChpbnQgYyA9IDAgOyBjICE9IEMgOyBjKyspIHsKICAgICAgICAgICAgaWYgKGdyaWRbcl1bY10gPCAwKSB7CiAgICAgICAgICAgICAgICBmb3IgKGludCBkciA9IC0xOyBkciA8PSAxIDsgZHIrKykgewogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGRjID0gLTEgOyBkYyA8PSAxIDsgZGMrKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFkciB8fCAhZGMpICYmIHIrZHIgPj0gMCAmJiByK2RyIDwgUiAmJiBjK2RjID49IDAgJiYgYytkYyA8IEMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFtyK2RyXVtjK2RjXSArPSBncmlkW3JdW2NdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZ3JpZFtyXVtjXSA9IE1JTjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IHIgPSAwIDsgciAhPSBSIDsgcisrKSB7CiAgICAgICAgZm9yIChpbnQgYyA9IDAgOyBjICE9IEMgOyBjKyspIHsKICAgICAgICAgICAgZ3JpZFtyXVtjXSArPSBhZGRbcl1bY107CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBzb2x2ZSgwLCAwKSA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0=