#include<stdio.h>
//#include<conio.h>
#include<stdlib.h>
long long suma(int *v, int N, int M){
int i,j;
long long sum;
sum = 0;
for(i=0;i<N;i++)
for(j=0;j<M;j++){
sum = sum + v[i*M+j];
//printf("%d ", v[i*M+j]);
}
return sum;
}
int flip(int *v, int r, int c, int N, int M){
v[r*M+c] = v[r*M+c]*-1;
return 0;
}
int flip_row(int *v, int r, int N, int M){
int i;
for(i=0;i<M;i++)
// flip(v,r,i,N,M);
v[r*M+i]=v[r*M+i]*-1;
return 0;
}
int flip_col(int *v, int c, int N, int M){
int i;
for(i=0;i<N;i++)
//flip(v,i,c,N,M);
v[i*M+c]=v[i*M+c]*-1;
return 0;
}
int main(){
int i,j,M,N;
FILE *in,*out;
in = fopen("flip.in","r");
out = fopen("flip.out","w+");
if(!fscanf(in, "%d %d\n", &N, &M)) return 1;
int board[N][M];
long long max = 0;
for(i=0;i<N;i++){
for(j=0;j<M;j++){
if(!fscanf(in, "%d ", &board[i][j])) return 1;
max+=board[i][j];
// printf("%d ", board[i][j]);
}
}
int temp[N][M];
int *pboard = &temp[0][0];
int all = 1, row, col, count;
long long sum;
all<<=(M+N);
// printf("%d\n", suma(pboard,N,M));
// row*M+col
for (i=0;i<all;i++){
count = i;
for(row=0;row<N;row++)
for(col=0;col<M;col++)
temp[row][col] = board[row][col];
sum = 0;
for (row=0;row<N;row++){
if (count%2)
flip_row(pboard, row, N, M);
count/=2;
}
for (col = 0;col<M;col++){
if (count%2)
flip_col(pboard, col, N, M);
count/=2;
}
sum = suma(pboard, N, M);
if (sum>max)
max = sum;
}
fprintf(out,"%lld", max);
fclose(in);
fclose(out);
// getch();
return 0;
}