var f:array[0..100,0..50,0..50]of qword;
a:array[0..50,0..50]of longint;
i,j,k,l,n,m:longint;
function max(a,b:qword):qword;
begin
if a>b then exit(a)
else exit(b);
end;
begin
//assign(input,’message.in’);
//reset(input);
//assign(output,’message.out’);
//rewrite(output);
read(n,m);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
fillchar(f,sizeof(f),0);
f[2,1,1]:=a[1,1];
for k:=1 to n+m do
for i:=1 to k-1 do
for j:=1 to k-1 do
if (i<>j) or ((i=j) and (k=n+m)) then
begin
f[k,i,j]:=max(f[k,i,j],f[k-1,i-1,j-1]+a[i,k-i]+a[j,k-j]);
f[k,i,j]:=max(f[k,i,j],f[k-1,i,j-1]+a[i,k-i]+a[j,k-j]);
f[k,i,j]:=max(f[k,i,j],f[k-1,i-1,j]+a[i,k-i]+a[j,k-j]);
f[k,i,j]:=max(f[k,i,j],f[k-1,i,j]+a[i,k-i]+a[j,k-j]);
end;
write(f[n+m,n,n]);
//close(input);
//close(output);
end.