#include<bits/stdc++.h>
using namespace std;
typedef __int128_t int128;
int N,M;
int128 ans;
int128 b[9999999];
int128 dp[1001][1001];
int128 read()
{
int128 x=0;bool f=0;char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
f=1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
return f?-x:x;
}
inline void write(int128 x)
{
if(x<0)
putchar('-');
if(x>9)
write(x/10);
putchar(x%10+'0');
}
int main()
{
cin>>N>>M;
while(N--)
{
for(int i=1;i<=M;i++)
b[i]=read();
int128 pre=0;
for(int i=1;i<=M;i++)
for(int j=M;j>=i;j--)
{
dp[i][j]=max(dp[i-1][j]+b[i-1]*pow(2,M-j+i-1),dp[i][j+1]+b[j+1]*pow(2,M-j+i-1));
if(i==j)
{
dp[i][j]+=b[i]*pow(2,M);
pre=max(pre,dp[i][j]);
}
}
ans+=pre;
memset(dp,0,sizeof(dp));
}
write(ans);
return 0;
}