#include <iostream>
#include <fstream>
const int d = 16;
int max;
void citire ( int a[d][d], int &n, int &m );
void afisare ( int max );
int cont ( int a[d][d], int n, int m, int pas );
void back ( int a[d][d], int st[d], int n, int m, int k, int &max );
void invers ( int a[d][d], int st[d], int n, int m, int k );
void suma ( int a[d][d], int n, int m, int &max );
int main ()
{
int a[d][d], st[d], k = 0, n, m;
bool x = false;
citire(a,n,m);
back(a,st,n,m,k,max);
afisare(max);
return 0;
}
void citire ( int a[d][d], int &n, int &m )
{
std::ifstream f("flip.in");
f >> n >> m;
for ( int i=0; i<n; i++ )
for ( int j=0; j<m; j++ )
f >> a[i][j];
f.close();
}
void afisare ( int max )
{
std::ofstream g("flip.out");
g << max;
g.close();
}
/*int cont ( int a[d][d], int n, int m, int pas )
{
bool ok = false;
if ( pas > n-1 )
{
pas -= n;
ok = true;
}
if ( !ok )
{
int s1 = 0, s2 = 0;
for ( int j=0; j<m; j++ )
{
s1 += a[pas][j];
s2 += a[pas][j] * (-1);
}
if ( s2 > s1 )
{
for ( int j=0; j<m; j++ )
a[pas][j] *= -1;
return 1;
}
}
else
{
int s1 = 0, s2 = 0;
for ( int j=0; j<n; j++ )
{
s1 += a[j][pas];
s2 += a[j][pas] * (-1);
}
if ( s2 > s1 )
{
for ( int j=0; j<n; j++ )
a[j][pas] *= -1;
return 1;
}
}
return 0;
}*/
void suma ( int a[d][d], int n, int m, int &max )
{
int s = 0;
for ( int i=0; i<n; i++ )
for ( int j=0; j<m; j++ )
s += a[i][j];
if ( s > max )
max = s;
}
void invers ( int a[d][d], int st[d], int n, int m, int k )
{
bool ok = false;
if ( k > n-1 )
{
k -= n;
ok = true;
}
if ( !ok )
for ( int i=0; i<m; i++ )
a[k][i] *= (-1);
else
for ( int i=0; i<n; i++ )
a[i][k] *= (-1);
}
void back ( int a[d][d], int st[d], int n, int m, int k, int &max )
{
if ( k < n+m )
{
for ( int i=0; i<2; i++ )
{
st[k] = i;
invers(a,st,n,m,k);
suma(a,n,m,max);
back(a,st,n,m,k+1,max);
}
invers(a,st,n,m,k);
}
}