i,j,n,m,mi:longint;
begin
readln(n,m);
fillchar(a,sizeof(a),-1);
for i:=1 to n do
begin
for j:=1 to m do read(a[i,j]);
readln;
end;
fillchar(f,sizeof(f),0);
f[1,1]:=a[1,1];
for i:=2 to n do
for j:=2 to m do
begin
if a[i,j]=-1 then continue;
if (f[i-1,j-2]=0)and(f[i-2,j-1]=0) then continue;
if f[i-1,j-2]>f[i-2,j-1]
then f[i,j]:=f[i-1,j-2]+a[i,j]
else f[i,j]:=f[i-2,j-1]+a[i,j];
end;
mi:=0;
for i:=1 to n do
if f[i,m]>mi then mi:=f[i,m];
for i:=1 to m do
if f[n,i]>mi then mi:=f[n,i];
if mi>0 then writeln(mi) else writeln(’cannot arrive.’);
end.
const maxn=1000;
var a:array[0..maxn,0..maxn]of longint;
f:array[0..maxn,0..maxn]of longint;
i,j,k,m,n,max:longint;
{main}
begin
max:=-1;
fillchar(a,sizeof(a),-1);
readln(n,m);
for i:=1 to n do
begin
for j:=1 to m do
read(a[i,j]);
readln;
end;
fillchar(f,sizeof(f),0);
f[1,1]:=a[1,1];
for i:=2 to n do
for j:=2 to m do
begin
if a[i,j]=-1 then continue;
if (f[i-1,j-2]=0)and(f[i-2,j-1]=0)then continue;
if f[i-1,j-2]>f[i-2,j-1] then f[i,j]:=f[i-1,j-2]+a[i,j]
else f[i,j]:=f[i-2,j-1]+a[i,j];
if ((i=n)or(j=m))and(f[i,j]>max)then max:=f[i,j];
end;
if max=-1 then writeln('cannot arrive.')else writeln(max);
end.