#include <iostream>
#include <math.h>
using namespace std;
int chess[102][102];
int r, c;
void read ()
{
cin>>r>>c;
for (int i=1; i<=r; i++)
{
for (int j=1; j<=c; j++)
{
cin>>chess[i][j];
}
}
}
int sumM [102][102];
int x_xq[] = {-1, -2, +1, +2};
int y_xq[] = {-2, -1, -2, -1};
void find_M ()
{
for (int i=1; i<=r; i++)
{
for (int j=1; j<=c; j++)
{
int tmp = chess[i][j];
for (int k=0; k<4; k++)
{
int Y = i+y_xq[k];
int X = j+x_xq[k];
if (Y>=1 && Y<=r && X>=1 && X<=c)
{
tmp = max (tmp, chess[i][j]+sumM[Y][X]);
}
}
sumM[i][j]=tmp;
}
}
}
int main ()
{
read ();
find_M ();
int Max = 0;
for (int i=1; i<=r; i++)
{
for (int j=1; j<=c; j++)
{
Max = max (Max, sumM[i][j]);
}
}
cout<<Max;
return 0;
}