#include <bits/stdc++.h>
using namespace std;
const int MAX = 83;
int n, m;
__int128 a[MAX];
__int128 dp[MAX][MAX];
__int128 p[MAX];
__int128 sum = 0;
inline int read() {
int s = 0, w = 1;
char ch = getchar();
while (ch >= '0' && ch <= '9') {s = (s << 3) + (s << 1) + ch - '0';ch = getchar();}
return s * w;
}
void print(__int128 x) {
if (x > 9)
print(x / 10);
putchar(x % 10 + '0');
}
__int128 d(int x, int y) {
if (dp[x][y] >= 0) return dp[x][y];
if (y - x >= 1) dp[x][y] = max(a[x] * p[m - y + x] + d(x + 1, y), a[y] * p[m - y + x] + d(x, y - 1));
else dp[x][y] = a[x] * p[m - y + x];
return dp[x][y];
}
void solve() {
cin >> n >> m;
p[0] = 1;
for (int i = 1; i <= m; i++)
p[i] = 2 * p[i - 1];
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= m ; j++)
a[j] = read();
memset(dp, -1, sizeof(dp));
sum += d(1, m);
}
if (sum == 0)
putchar('0');
else
print(sum);
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}