/*
TASK:apple
LANG:C
*/

#define MAXN (70)

#include <stdio.h>

short N, M;
long a[MAXN][MAXN], f[2*MAXN][MAXN][MAXN];

void input(void)
{
  short i, j;
  scanf("%hd %hd", &M, &N);
  for(i=0; i<M; ++i)
    for(j=0; j<N; ++j)
      scanf("%ld", &a[i][j]);
}

void calc(void)
{
  short i, j, pos;
  f[0][0][0]=a[0][0];
  for(pos=1; pos<M+N; ++pos)
    for(i=0; i<M && i<=pos; ++i)
      for(j=0; j<M && j<=pos; ++j)
      {
        f[pos][i][j]=0;
        if(i)
        {
          if(j && f[pos][i][j]<f[pos-1][i-1][j-1])
            f[pos][i][j]=f[pos-1][i-1][j-1];
        if(j<pos && f[pos][i][j]<f[pos-1][i-1][j])
            f[pos][i][j]=f[pos-1][i-1][j];
        }
        if(i<pos)
        {
          if(j && f[pos][i][j]<f[pos-1][i][j-1])
            f[pos][i][j]=f[pos-1][i][j-1];
        if(j<pos && f[pos][i][j]<f[pos-1][i][j])
            f[pos][i][j]=f[pos-1][i][j];
        }
        f[pos][i][j]+=a[i][pos-i];
        if(i!=j)
          f[pos][i][j]+=a[j][pos-j];
      }
}

int main(void)
{
  input();
  calc();
  printf("%ld\n", f[M+N-2][M-1][M-1]);
  return 0;
}

