#include <iostream>
#include <bits/stdc++.h>
using namespace std;
long long max(long long a,long long b,long long c,long long d)
{
return (((((a>b)?a:b)>c)?((a>b)?a:b):c)>d)?((((a>b)?a:b)>c)?((a>b)?a:b):c):d;
}
long long t[120][60][60],m,n,i,j,a[60][60],q=0;
int main() {
cin>>m>>n;
for(i=0;i<n;i++) {
for(j=0;j<m;j++){
cin>>a[i][j];
}
}
memset(t,0,sizeof(t));
for(q=0;q<n+m-1;q++){
for(i=0;i<m&&i<=q;i++){
for(j=0;j<m&&j<=q&&j<i;j++){
if(j==0){
t[q][i][j]=max(t[q-1][i-1][j]+a[i][q-i]+a[j][q-j],t[q-1][i][j]+a[i][q-i]+a[j][q-j],0,0);
}
else {
t[q][i][j]=max(t[q-1][i-1][j]+a[i][q-i]+a[j][q-j],t[q-1][i-1][j-1]+a[i][q-i]+a[j][q-j],
t[q-1][i][j-1]+a[i][q-i]+a[j][q-j],t[q-1][i][j]+a[i][q-i]+a[j][q-j]);
}
}
}
}
t[n+m-2][m-1][m-1]=max(t[n+m-3][m-2][m-1],t[n+m-3][m-1][m-2]);
cout<<t[n+m-2][m-1][m-1];
return 0;
}