/*
TASK:apple
LANG:C
*/
#include <stdio.h>
#include <stdlib.h>
short int ch = 1;
int m , n ;
long int count=0;
long int ans = 0;
int a2[70][70];

void mcopy (int s[70][70] )
{
     int i , j ;
     for (i=0;i<n;i++){ printf("\n");
         for (j=0;j<m;j++){
             a2[i][j] = s[i][j];
             printf(" %d",s[i][j]);
             }}
}

void solve (int s[70][70] , short int x , short int y )
{int tmp;
     if ( x < n-1 ) { if ( y < n-1 ) { count = count + s[x+1][y]; tmp = s[x+1][y] ; s[x+1][y] = 0; solve(s,x+1,y) ;
                                       count = count - tmp + s[x][y+1] ; s[x+1][y] = tmp ; tmp = s[x][y+1]; s[x][y+1] = 0 ; solve(s,x,y+1);s[x][y+1] = tmp ; count = count - tmp; }
                      else { count = count + s[x+1][y] ; tmp = s[x+1][y] ; s[x+1][y]= 0; solve(s,x+1,y);count = count - tmp ; s[x+1][y] = tmp;}
                    }
               else { if ( y < n-1 ) { 
                                      count = count + s[x][y+1];  tmp = s[x][y+1] ; s[x][y+1] = 0 ; solve (s,x,y+1) ; count = count - tmp;s[x][y+1]= tmp;
                                     }
                                else {
                                      count+= s[n-1][m-1];tmp = s[n-1][m-1] ; s[n-1][m-1] = 0; 
                                      if ( ans < count) {ans = count ; if (ch) mcopy(s) ;}
                                      count = count - tmp; s[m-1][n-1] = tmp;
                                     }
                    }
}

int main(void)
{
  int i,j;
  long int answer=0;
  int a[70][70];
  scanf("%d %d",&n , &m );
  for (i=0;i<n;i++) for (j=0;j<m;j++) scanf("%d",&a[i][j]);
  count = a[0][0];
  a[0][0]=0;
  solve(a,0,0);
  answer=ans;
  ans=0;
  count=0;
  ch = 0 ;
  solve(a2,0,0);
  answer=answer + ans;
  printf("%ld",answer);
  printf("\n");
  return 0;
}
