#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mx=1e2;
int mp[mx][mx];
int m,n;
int man;
void dfs(int val,int x,int y,bool situ){
if((x==1)&&(y==1)&&(!situ)){
dfs(val,1,1,1);
}
if((x==m)&&(y==n)&&(situ)){
man=max(man,val);
}
if((x>m)||(x<1)||(y>m)||(y<1)||(mp[x][y]==-1)){
return;
}
val+=mp[x][y];
int wcis=mp[x][y];
mp[x][y]=-1;
if((x==1)&&(y==1)&&(!situ)){
dfs(val,1,1,1);
}
else if(situ){
dfs(val,x+1,y,situ);
dfs(val,x,y+1,situ);
}
else{
dfs(val,x-1,y,situ);
dfs(val,x,y-1,situ);
}
mp[x][y]=wcis;
return;
}
signed main(){
cin>>m>>n;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
scanf("%d",&mp[i][j]);
}
}
dfs(0,m,n,0);
cout<<man;
return 0;
}