#include<bits/stdc++.h>
using namespace std;
long long n,m,a[81][81];
__int128 dp[81][81],ans,cf2[81]={1};
#define int __int128
inline void read(int &n){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
n=x*f;
}
inline void print(int n){
if(n<0){
putchar('-');
n*=-1;
}
if(n>9) print(n/10);
putchar(n % 10 + '0');
}
#undef int
int main(){
cin>>n>>m;
for(int i=1;i<=63;i++) cf2[i]=(__int128)cf2[i-1]*__int128(2);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
dp[2][m]=(__int128)2*(__int128)a[i][1],dp[1][m-1]=(__int128)2*(__int128)a[i][m];
__int128 maxn=0;
for(int st=m-3;st>=0;st--){
for(int j=1;j+st<=m;j++){
if(j+st+1<=m&&j-1>=1) dp[j][j+st]=max((__int128)dp[j][j+st+1]+(__int128)(a[i][j+st+1]*cf2[m-st-1]),(__int128)dp[j-1][j+st]+(__int128)(a[i][j-1]*cf2[m-st-1]));
else if(j+st+1<=m) dp[j][j+st]=(__int128)dp[j][j+st+1]+(__int128)(a[i][j+st+1]*cf2[m-st-1]);
else if(j-1>=1) dp[j][j+st]=(__int128)dp[j-1][j+st]+(__int128)(a[i][j-1]*cf2[m-st-1]);
maxn=max(__int128(maxn),(__int128)dp[j][j+st]);
}
}
for(int j=1;j<=m;j++) maxn=max(__int128(maxn),(__int128)dp[j][j]+(__int128)(a[i][j]*cf2[m]));
ans=(__int128)maxn+(__int128)ans;
}
print((__int128)ans);
return 0;
}
求调qwq