#include<iostream>
#include<string.h>
#include<cmath>
using namespace std;
int a[50];//幂数
int b[50];//和
int c[50];//加数
int d[100][100];//要计算的数据
void pow2() {
int h;
for (int i = 0; i < 50; i++) {
a[i] *= 2;
}
for (int i = 0; i < 49; i++) {
h = a[i] / 10;
a[i] %= 10;
a[i + 1] += h;
}
}
void add2() {
int h = 0;
for (int i = 0; i < 49; i++) {
b[i] += c[i];
h = b[i] / 10;
b[i] %= 10;
b[i + 1] += h;
}
}
void addend2(int k) {
memset(c, 0, sizeof(c));
for (int i = 0; i < 50; i++) {
c[i] = a[i];
}
int h = 0;
for (int i = 0; i < 49; i++) {
c[i] *= k;
}
for (int i = 0; i < 49; i++) {
h = c[i] / 10;
c[i] %= 10;
c[i + 1] += h;
}
}
int main() {
a[0] = 1;
int n,m;
int p, q;
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> d[i][j];
}
}
for (int i = 0; i < n; i++) {
p = 0, q = m - 1;
memset(a, 0, sizeof(a));
a[0] = 1;//进行初始化
for (int j = 0; j < m; j++) {
pow2();
int k = 0;
if (d[i][p] <= d[i][q]) {
k = d[i][p];
p++;
}
else {
k = d[i][q];
q--;
}
addend2(k);
add2();
}
}
int w=0;
for (int i = 49; i >= 0; i--) {
if (b[i] != 0) {
w = i;
break;
}
}
for (int i = w; i >= 0; i--) {
cout << b[i];
}
return 0;
}
大佬救命,案列过不了