#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll minn=-1e18;
ll n,m,a[1005][1005],sum[1005][1005];
bool p[1005][1005];
ll dfs(ll aa,ll b){
if(sum[aa][b]!=minn) return sum[aa][b];
ll ans=a[aa][b];
if(b-1>=1 && p[aa][b-1]==0){
p[aa][b-1]=1;
ans=max(dfs(aa,b-1),ans);
p[aa][b-1]=0;
}
if(b+1<=n && p[aa][b+1]==0){
p[aa][b+1]=1;
ans=max(dfs(aa,b+1),ans);
p[aa][b+1]=0;
}
if(aa+1<=n && p[aa+1][b]==0){
p[aa+1][b]=1;
ans=max(dfs(aa+1,b),ans);
p[aa+1][b]=0;
}
sum[aa][b]=max(ans,sum[aa][b]);
return sum[aa][b];
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j) sum[i][j]=minn;
}
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j) cin>>a[i][j];
}
dfs(n,m);
cout<<sum[n][m]<<endl;
return 0;
}