#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S chmax( S & a, T b) {
if ( a< b) {
a= b;
}
return a;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int X;
int Y;
int S[ 15 ] [ 15 ] ;
int vis[ 15 ] [ 15 ] ;
int dx[ 4 ] = { - 1 ,1 ,0 ,0 } ;
int dy[ 4 ] = { 0 ,0 ,- 1 ,1 } ;
int solve( int i, int j) {
int ni;
int nj;
int d;
int res;
int tmp = 0 ;
res = S[ i] [ j] ;
vis[ i] [ j] = 1 ;
for ( d= ( 0 ) ; d< ( 4 ) ; d++ ) {
ni = i + dx[ d] ;
nj = j + dy[ d] ;
if ( ni < 0 || nj < 0 || ni >= X || nj >= Y || vis[ ni] [ nj] ) {
continue ;
}
chmax( tmp, solve( ni,nj) ) ;
}
vis[ i] [ j] = 0 ;
return res + tmp;
}
class Solution{
public :
int getMaximumGold( vector< vector< int >> & grid) {
int i;
int res = 0 ;
X = grid.size ( ) ;
Y = grid[ 0 ] .size ( ) ;
for ( i= ( 0 ) ; i< ( X) ; i++ ) {
int j;
for ( j= ( 0 ) ; j< ( Y) ; j++ ) {
S[ i] [ j] = grid[ i] [ j] ;
}
}
for ( i= ( 0 ) ; i< ( X) ; i++ ) {
int j;
for ( j= ( 0 ) ; j< ( Y) ; j++ ) {
vis[ i] [ j] = 0 ;
}
}
for ( i= ( 0 ) ; i< ( X) ; i++ ) {
int j;
for ( j= ( 0 ) ; j< ( Y) ; j++ ) {
if ( S[ i] [ j] == 0 ) {
vis[ i] [ j] = 1 ;
}
}
}
for ( i= ( 0 ) ; i< ( X) ; i++ ) {
int j;
for ( j= ( 0 ) ; j< ( Y) ; j++ ) {
if ( vis[ i] [ j] == 0 ) {
chmax( res, solve( i,j) ) ;
}
}
}
return res;
}
}
;
// cLay varsion 20191102-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int X, Y, S[15][15];
// int vis[15][15];
// int dx[4] = {-1,1,0,0};
// int dy[4] = {0,0,-1,1};
//
// int solve(int i, int j){
// int ni, nj, d;
// int res, tmp = 0;
//
// res = S[i][j];
// vis[i][j] = 1;
//
// rep(d,4){
// ni = i + dx[d];
// nj = j + dy[d];
// if(ni < 0 || nj < 0 || ni >= X || nj >= Y || vis[ni][nj]) continue;
// tmp >?= solve(ni,nj);
// }
//
// vis[i][j] = 0;
// return res + tmp;
// }
//
// class Solution {
// public:
// int getMaximumGold(vector<vector<int>>& grid) {
// int res = 0;
// X = grid.size();
// Y = grid[0].size();
// rep(i,X) rep(j,Y) S[i][j] = grid[i][j];
// rep(i,X) rep(j,Y) vis[i][j] = 0;
// rep(i,X) rep(j,Y) if(S[i][j]==0) vis[i][j] = 1;
// rep(i,X) rep(j,Y) if(vis[i][j]==0) res >?= solve(i,j);
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIGNobWF4KFMgJmEsIFQgYil7CiAgaWYoYTxiKXsKICAgIGE9YjsKICB9CiAgcmV0dXJuIGE7Cn0KI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICByZXR1cm4gMDsKfQojdW5kZWYgbWFpbgppbnQgWDsKaW50IFk7CmludCBTWzE1XVsxNV07CmludCB2aXNbMTVdWzE1XTsKaW50IGR4WzRdID0gey0xLDEsMCwwfTsKaW50IGR5WzRdID0gezAsMCwtMSwxfTsKaW50IHNvbHZlKGludCBpLCBpbnQgail7CiAgaW50IG5pOwogIGludCBuajsKICBpbnQgZDsKICBpbnQgcmVzOwogIGludCB0bXAgPSAwOwogIHJlcyA9IFNbaV1bal07CiAgdmlzW2ldW2pdID0gMTsKICBmb3IoZD0oMCk7ZDwoNCk7ZCsrKXsKICAgIG5pID0gaSArIGR4W2RdOwogICAgbmogPSBqICsgZHlbZF07CiAgICBpZihuaSA8IDAgfHwgbmogPCAwIHx8IG5pID49IFggfHwgbmogPj0gWSB8fCB2aXNbbmldW25qXSl7CiAgICAgIGNvbnRpbnVlOwogICAgfQogICAgY2htYXgodG1wLCBzb2x2ZShuaSxuaikpOwogIH0KICB2aXNbaV1bal0gPSAwOwogIHJldHVybiByZXMgKyB0bXA7Cn0KY2xhc3MgU29sdXRpb257CiAgcHVibGljOgogIGludCBnZXRNYXhpbXVtR29sZCh2ZWN0b3I8dmVjdG9yPGludD4+JiBncmlkKXsKICAgIGludCBpOwogICAgaW50IHJlcyA9IDA7CiAgICBYID0gZ3JpZC5zaXplKCk7CiAgICBZID0gZ3JpZFswXS5zaXplKCk7CiAgICBmb3IoaT0oMCk7aTwoWCk7aSsrKXsKICAgICAgaW50IGo7CiAgICAgIGZvcihqPSgwKTtqPChZKTtqKyspewogICAgICAgIFNbaV1bal0gPSBncmlkW2ldW2pdOwogICAgICB9CiAgICB9CiAgICBmb3IoaT0oMCk7aTwoWCk7aSsrKXsKICAgICAgaW50IGo7CiAgICAgIGZvcihqPSgwKTtqPChZKTtqKyspewogICAgICAgIHZpc1tpXVtqXSA9IDA7CiAgICAgIH0KICAgIH0KICAgIGZvcihpPSgwKTtpPChYKTtpKyspewogICAgICBpbnQgajsKICAgICAgZm9yKGo9KDApO2o8KFkpO2orKyl7CiAgICAgICAgaWYoU1tpXVtqXT09MCl7CiAgICAgICAgICB2aXNbaV1bal0gPSAxOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgZm9yKGk9KDApO2k8KFgpO2krKyl7CiAgICAgIGludCBqOwogICAgICBmb3Ioaj0oMCk7ajwoWSk7aisrKXsKICAgICAgICBpZih2aXNbaV1bal09PTApewogICAgICAgICAgY2htYXgocmVzLCBzb2x2ZShpLGopKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2YXJzaW9uIDIwMTkxMTAyLTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gaW50IFgsIFksIFNbMTVdWzE1XTsKLy8gaW50IHZpc1sxNV1bMTVdOwovLyBpbnQgZHhbNF0gPSB7LTEsMSwwLDB9OwovLyBpbnQgZHlbNF0gPSB7MCwwLC0xLDF9OwovLyAKLy8gaW50IHNvbHZlKGludCBpLCBpbnQgail7Ci8vICAgaW50IG5pLCBuaiwgZDsKLy8gICBpbnQgcmVzLCB0bXAgPSAwOwovLyAKLy8gICByZXMgPSBTW2ldW2pdOwovLyAgIHZpc1tpXVtqXSA9IDE7Ci8vIAovLyAgIHJlcChkLDQpewovLyAgICAgbmkgPSBpICsgZHhbZF07Ci8vICAgICBuaiA9IGogKyBkeVtkXTsKLy8gICAgIGlmKG5pIDwgMCB8fCBuaiA8IDAgfHwgbmkgPj0gWCB8fCBuaiA+PSBZIHx8IHZpc1tuaV1bbmpdKSBjb250aW51ZTsKLy8gICAgIHRtcCA+Pz0gc29sdmUobmksbmopOwovLyAgIH0KLy8gCi8vICAgdmlzW2ldW2pdID0gMDsKLy8gICByZXR1cm4gcmVzICsgdG1wOwovLyB9Ci8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICBpbnQgZ2V0TWF4aW11bUdvbGQodmVjdG9yPHZlY3RvcjxpbnQ+PiYgZ3JpZCkgewovLyAgICAgaW50IHJlcyA9IDA7Ci8vICAgICBYID0gZ3JpZC5zaXplKCk7Ci8vICAgICBZID0gZ3JpZFswXS5zaXplKCk7Ci8vICAgICByZXAoaSxYKSByZXAoaixZKSBTW2ldW2pdID0gZ3JpZFtpXVtqXTsKLy8gICAgIHJlcChpLFgpIHJlcChqLFkpIHZpc1tpXVtqXSA9IDA7Ci8vICAgICByZXAoaSxYKSByZXAoaixZKSBpZihTW2ldW2pdPT0wKSB2aXNbaV1bal0gPSAxOwovLyAgICAgcmVwKGksWCkgcmVwKGosWSkgaWYodmlzW2ldW2pdPT0wKSByZXMgPj89IHNvbHZlKGksaik7Ci8vICAgICByZXR1cm4gcmVzOwovLyAgIH0KLy8gfTsK