#include<bits/stdc++.h>
using namespace std;
const int MAXN=85;
int in_2[MAXN],m,n;
__int128 pw[MAXN],ans,f[MAXN][MAXN];
void pre(){
pw[0]=1;
for(int i=1;i<MAXN;++i)pw[i]=pw[i-1]*2;
}
void dp(){
for(int i=1;i<=n;++i)scanf("%d",&in_2[i]);
memset(f,0,sizeof f);
for(int i=1;i<=n;++i)f[i][i]=in_2[i]*pw[n];
for(int len=2;len<=n;++len){
for(int i=1;i+len-1<=n;++i){
int ed=i+len-1;
f[i][ed]=max(f[i][ed-1]+in_2[ed]*pw[n-len+1],f[i+1][ed]+in_2[i]*pw[n-len+1]);
}
}
}
void write(__int128 a){
string s;
while(a){
s+=a%10+'0';
a/=10;
}
reverse(s.begin(),s.end());
cout<<s;
}
int main(){
scanf("%d%d",&m,&n);
pre();
for(int i=1;i<=m;++i){
dp();
ans+=f[1][n];
}
write(ans);
return 0;
}