#include <bits/stdc++.h>
using namespace std;
int n,m;
int a[1005][1005];
int f[1005][1005];
bool flag[1005][1005];
int main()
{
// memset(flag,0,sizeof(flag));
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
f[1][1]=a[1][1];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int tmp;
if(flag[i][j])
continue;
if(i==n)
{
// cout<<"============"<<endl;
tmp=max(f[i][j-1],f[i-1][j]);
f[i][j]=tmp+a[i][j];
flag[i][j]=true;
continue;
}
tmp=max(f[i][j-1],max(f[i+1][j],f[i-1][j]));
f[i][j]=tmp+a[i][j];
flag[i][j]=true;
}
}
cout<<f[n][m]<<endl;
return 0;
}