type arr=array[0..81] of longint;
var a:array[0..101,0..101] of longint;
f:array[-1..101,-1..101] of arr;
k:array[0..81] of arr;
ans,tmp:arr;
n,m,i,j,l:longint;
function add(a,b:arr):arr;
var i,len:integer; tmp:arr;
begin
fillchar(tmp,sizeof(tmp),0);
if a[0]>b[0] then len:=a[0]
else len:=b[0];
for i:=1 to len do
begin
inc(tmp[i],a[i]+b[i]);
inc(tmp[i+1],tmp[i] div 10);
tmp[i]:=tmp[i] mod 10;
end;
if tmp[len+1]>0 then tmp[0]:=len+1
else tmp[0]:=len;
exit(tmp);
end;
function multiply2(a:arr; b:longint):arr;
var i,len:integer; tmp:arr;
begin
fillchar(tmp,sizeof(tmp),0);
if b=0 then exit(tmp);
if a[0]=0 then exit(tmp);
for i:=1 to len do
begin
inc(tmp[i],a[i]*b);
inc(tmp[i+1],tmp[i] div 10);
tmp[i]:=tmp[i] mod 10;
end;
if tmp[len+1]>0 then tmp[0]:=len+1
else tmp[0]:=len;
exit(tmp);
end;
function max(a,b:arr):arr;
var i:longint;
begin
if a[0]>b[0] then exit(a);
if b[0]>a[0] then exit(b);
for i:=b[0] downto 1 do
begin
if a[i]>b[i] then exit(a);
if b[i]>a[i] then exit(b);
end;
exit(a);
end;
begin
readln(n,m);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
k[0,0]:=1; k[0,1]:=1;
k[1,0]:=1; k[1,1]:=2;
for i:=2 to m do
k[i]:=multiply2(k[i-1],2);
for l:=1 to n do
begin
fillchar(tmp,sizeof(tmp),0);
fillchar(f,sizeof(f),0);
for i:=0 to m do
for j:=0 to m-i do
begin
if (i=0) and (j=0) then continue;
f[i,j]:=max(add(f[i-1,j],multiply2(k[i+j],a[l,i])),
add(f[i,j+1],multiply2(k[i+j],a[l,m-j+1])));
end;
for i:=0 to m do
tmp:=max(tmp,f[i,m-i]);
ans:=add(ans,tmp);
end;
if ans[0]=0 then writeln(0);
for i:=ans[0] downto 1 do
write(ans[i]);
end.