Program Flip;
var m,n : integer;
T : array[1..16,1..16] of longint;
L,C : array[1..16,0..1] of longint;
S,Smax : longint;
procedure Citeste;
var Intrare : text;
i,j : integer;
begin
assign(Intrare,'flip.in');
reset(Intrare);
readln(Intrare,n,m);
for i:=1 to n do
begin
L[i,0]:=0;
L[i,1]:=0;
end;
for j:=1 to m do
begin
C[j,0]:=0;
C[j,1]:=0;
end;
S:=0;
for i:=1 to n do
for j:=1 to m do
begin
read(Intrare,T[i,j]);
S:=S+T[i,j];
if T[i,j]<0 then
begin
L[i,0]:=L[i,0]-T[i,j];
C[j,0]:=C[j,0]-T[i,j];
end
else
begin
L[i,1]:=L[i,1]+T[i,j];
C[j,1]:=C[j,1]+T[i,j];
end;
end;
close(Intrare);
end;
procedure Comuta(r,nr : integer);
var i : integer;
aux : longint;
begin
if r=0 then
begin
aux:=L[nr,0];
L[nr,0]:=L[nr,1];
L[nr,1]:=aux;
for i:=1 to m do
begin
if T[nr,i]<0 then
begin
C[i,0]:=C[i,0]+T[nr,i];
C[i,1]:=C[i,1]-T[nr,i];
end
else
begin
C[i,1]:=C[i,1]-T[nr,i];
C[i,0]:=C[i,0]+T[nr,i];
end;
T[nr,i]:=-T[nr,i];
end;
S:=0;
for i:=1 to m do S:=S+abs(C[i,0]-C[i,1]);
end
else
begin
aux:=C[nr,0];
C[nr,0]:=C[nr,1];
C[nr,1]:=aux;
for i:=1 to n do
begin
if T[i,nr]<0 then
begin
L[i,0]:=L[i,0]+T[i,nr];
L[i,1]:=L[i,1]-T[i,nr];
end
else
begin
L[i,1]:=L[i,1]-T[i,nr];
L[i,0]:=L[i,0]+T[i,nr];
end;
T[i,nr]:=-T[i,nr];
end;
S:=0;
for i:=1 to n do S:=S+abs(L[i,0]-L[i,1]);
end;
end;
procedure Calculeaza;
var i : integer;
begin
Smax:=S;
for i:=1 to m do
begin
Comuta(1,i);
if S>Smax then Smax:=S else Comuta(1,i);
end;
for i:=1 to n do
begin
Comuta(0,i);
if S>Smax then Smax:=S else Comuta(0,i);
end;
end;
procedure Scrie;
var Iesire : text;
begin
assign(Iesire,'flip.out');
rewrite(Iesire);
write(Iesire,Smax);
close(Iesire);
end;
begin
Citeste;
Calculeaza;
Scrie;
end.