#include<iostream>
#include<cstring>
using namespace std;
int r,c;
int a[100][100];
void init();
int my_max(int,int,int,int);
int main()
{
init();
int i=1,j=1,tot=0,k;
while(1)
{
tot+=a[i][j];
a[i][j]=-1;
if(i==r&&j==c) break;
k=my_max(a[i-1][j],a[i+1][j],a[i][j-1],a[i][j+1]);
if(k==1) i--;
if(k==2) i++;
if(k==3) j--;
if(k==4) j++;
}
cout<<tot<<endl;
return 0;
}
void init()
{
cin>>r>>c;
memset(a,0,sizeof(a));
for(int i=0;i<=c+1;++i)
{
a[0][i]=-1;
a[r+1][i]=-1;
}
for(int i=0;i<=r+1;i++)
{
a[i][0]=-1;
a[i][c+1]=-1;
}
for(int i=1;i<=r;++i)
{
for(int j=1;j<=c;++j)
{
cin>>a[i][j];
}
}
/*for(int i=0;i<=r+1;++i)
{
for(int j=0;j<=c+1;++j) cout<<a[i][j]<<' ';
cout<<endl;
}*/
}
int my_max(int a,int b,int c,int d)
{
int temp=-1,k=-1;
if(a>temp)
{
temp=a;
k=1;
}
if(b>temp)
{
temp=b;
k=2;
}
if(c>temp)
{
temp=c;
k=3;
}
if(d>temp)
{
temp=d;
k=4;
}
return k;
}
/**************************************************************
Problem: 2042
User: admin
Language: C++
Result: Accepted
Time:55 ms
Memory:2112 kb
****************************************************************/