#include<bits/stdc++.h>
using namespace std;
int n,m;
__int128 ans;
__int128 a[100][100];
__int128 dp[100][100];
inline void input(__int128 &s)
{
s=0;
char c=' ';
while(c>'9'||c<'0') c=getchar();
while(c>='0'&&c<='9')
{
s=s*10+c-'0';
c=getchar();
}
}
inline void output(__int128 x)
{
if(x>9)
output(x/10);
putchar(x%10+'0');
}
__int128 f(__int128 row[])
{
for(int len=1;len<=m;len++)
{
for(int i=1;i+len-1<=m;i++)
{
__int128 j=i+len-1;
if(i==j)
dp[i][j]=(1<<m)*row[i];
else
{
__int128 k=m-(j-i);
dp[i][j]=max(dp[i+1][j]+(1<<k)*row[i],dp[i][j-1]+(1<<k)*row[j]);
}
}
}
return dp[1][m];
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
input(a[i][j]);
for(int i=1;i<=n;i++)
ans+=f(a[i]);
output(ans);
return 0;
}