{
TASK:apple
LANG:Pascal
}
type cells=Record
       maxv:Longint;
       pi,pj:Byte
     End;
var n,m,i,j,k,max,maxp,cur,sj,si,answer,newi,newj:Longint;
    a:Array[0..71,0..71] of Longint;
    b:Array[0..71,0..71] of cells;
Begin
  ReadLn(m,n);
 For i:=m downto 1 do
  For j:=1 to n do
   Read(a[i,j]);
 For i:=m downto 1 do
  For j:=1 to n do
   Begin
     b[i,j].maxv:=a[i,j];
     b[i,j].pi:=0;
     b[i,j].pj:=0;
   End;
 For k:=1 to n+m do
  For i:=m downto 1 do
   For j:=1 to n do
   If b[i,j].maxv>0 then
    Begin
     If i>1 then
      If b[i,j].maxv+a[i-1,j]>=b[i-1,j].maxv then {>= for prio of 1st}
        Begin
          b[i-1,j].maxv:=b[i,j].maxv+a[i-1,j];
          b[i-1,j].pi:=i;
          b[i-1,j].pj:=j;
        End;
     If j<n then
      If b[i,j].maxv+a[i,j+1]>b[i,j+1].maxv then
        Begin
          b[i,j+1].maxv:=b[i,j].maxv+a[i,j+1];
          b[i,j+1].pi:=i;
          b[i,j+1].pj:=j;
        End;
    End;
  max:=0;
  maxp:=1;
 For j:=1 to n do
  If b[1,j].maxv>max then
   Begin
     max:=b[1,j].maxv;
     maxp:=j;
   End;
  si:=1;
  sj:=maxp;
  cur:=0;
 For k:=1 to n+m do
 If (si>0)and(sj>0) then
  Begin
    cur:=cur+a[si,sj];
    a[si,sj]:=0;
    newi:=b[si,sj].pi;
    newj:=b[si,sj].pj;
    si:=newi;
    sj:=newj;
  End;
  answer:=answer+cur;
{startin new session}
 For i:=m downto 1 do
  For j:=1 to n do
   Begin
     b[i,j].maxv:=a[i,j];
     b[i,j].pi:=0;
     b[i,j].pj:=0;
   End;
 For k:=1 to n+m do
  For i:=m downto 1 do
   For j:=1 to n do
   If b[i,j].maxv>0 then
    Begin
     If i>1 then
      If b[i,j].maxv+a[i-1,j]>b[i-1,j].maxv then
        Begin
          b[i-1,j].maxv:=b[i,j].maxv+a[i-1,j];
          b[i-1,j].pi:=i;
          b[i-1,j].pj:=j;
        End;
     If j<n then
      If b[i,j].maxv+a[i,j+1]>=b[i,j+1].maxv then {>= for prio of 2nd}
        Begin
          b[i,j+1].maxv:=b[i,j].maxv+a[i,j+1];
          b[i,j+1].pi:=i;
          b[i,j+1].pj:=j;
        End;
    End;
  max:=0;
  maxp:=1;
 For j:=1 to n do
  If b[1,j].maxv>max then
   Begin
     max:=b[1,j].maxv;
     maxp:=j;
   End;
  si:=1;
  sj:=maxp;
  cur:=0;
 For k:=1 to n+m do
 If (si>0)and(sj>0) then
  Begin
    cur:=cur+a[si,sj];
    a[si,sj]:=0;
    newi:=b[si,sj].pi;
    newj:=b[si,sj].pj;
    si:=newi;
    sj:=newj;
  End;
  answer:=answer+cur;
  WriteLn(answer);
End.
