#include <stdio.h>
#include <stdlib.h>
int *x;
long max = -2147483645;
void citire(int *m, int *n, int ***a)
{
int i, j, k;
FILE *f = fopen("flip.in", "r");
fscanf(f, "%d %d\n", n, m);
//printf("m=%d n=%d\n", *m,*n);
*a = (int**) malloc ((*n)*sizeof(int*));
x = (int*) malloc ((*m)*sizeof(int));
for (i=0; i<*n; i++)
(*a)[i] = (int*) malloc ((*m)*sizeof(int));
for (i=0; i<*n; i++)
{
for (j=0; j<*m; j++)
{
fscanf(f, "%d ", &(*a)[i][j]);
}
fscanf(f, "\n");
}
/*for (i=0; i<*n; i++)
{
for (j=0; j<*m; j++)
printf("%d ", (*a)[i][j]);
printf("\n");
}*/
fclose(f);
}
//void back(int k, long *max, int **a, int m, int n)
void back(int k, int **a, int m, int n)
{
int i,j;
long s = 0, l;
if (k < m)
{
x[k]=1;
//back(k+1, max, a, m, n);
back(k+1, a, m, n);
x[k]=-1;
//back(k+1, max, a, m ,n);
back(k+1, a, m ,n);
}
else if (k == m)
{
s = 0;
for(i=0; i<n; i++)
{
l=0;
for(j=0; j<m; j++)
l+=a[i][j]*x[j];
s+=abs(l);
}
if(s > max)
max = s;
}
}
void scriere()
{
FILE *g = fopen("flip.out", "w");
fprintf(g, "%ld\n", max);
fclose(g);
}
int main()
{
int i, j, m, n, **a;
//long max = -2147483645;
citire(&m, &n, &a);
/*printf("m=%d n=%d\n", m,n);
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
printf("%d ", a[i][j]);
printf("\n");
}*/
//back(0, &max, a, m, n);
back(0, a, m, n);
scriere();
return 0;
}