/*
TASK: apple
LANG: C
*/
#include <stdio.h>
#define MAXN 100

 int n,m;
 int a[MAXN][MAXN];
 int g[MAXN][MAXN];
 int b[MAXN][MAXN];
 int c[MAXN][MAXN];
 int s,res;

inline int max (int a,int b)
  {
   return a>b?a:b;
  }

 int main ()
  {
   int i,j,k,x,y;
   //freopen("in.txt","r",stdin);
   //freopen("out.txt","w",stdout);
   scanf("%d%d",&n,&m);
   for (i=1;i<=n;i++)
    for (j=1;j<=m;j++)
     {
      scanf("%d",&a[i][j]);
      g[i][j]=g[i][j-1]+a[i][j];
      s+=a[i][j];
     }
   if (n==1 || m==1)
    {
     printf("%d\n",s);
     return 0;
    }
   for (i=1;i<=m;i++)
     for (j=1;j<i;j++)
      b[j][i]=g[1][i];
   for (i=2;i<=n;i++)
    {
     memset(c,0,sizeof(c));
     for (j=1;j<=m;j++)
      for (k=j+1;k<=m;k++)
       for (x=j;x<k;x++)
        for (y=k;y<=m;y++)
         c[x][y]=max(c[x][y],b[j][k]+g[i][x]-g[i][j-1]+g[i][y]-g[i][k-1]);
     memcpy(b,c,sizeof(c));
    }
   res=0;
   for (j=1;j<=m;j++)
    for (k=j+1;k<=m;k++)
     res=max(res,b[j][k]);
   printf("%d\n",res);
   return 0;
  }
