#include<iostream>
using namespace std;
int a[200][200],H,W;
int solve(int ax,int ay,int bx,int by){
	int maxn=0;
	if(ax<H-1 && bx<H-1){int B=0;if(ax!=bx || ay!=by){B=a[bx][by];}maxn=max(maxn,solve(ax+1,ay,bx+1,by)+a[ax][ay]+B);}
	if(ay<W-1 && bx<H-1){int B=0;if(ax!=bx || ay!=by){B=a[bx][by];}maxn=max(maxn,solve(ax,ay+1,bx+1,by)+a[ax][ay]+B);}
	if(ax<H-1 && by<W-1){int B=0;if(ax!=bx || ay!=by){B=a[bx][by];}maxn=max(maxn,solve(ax+1,ay,bx,by+1)+a[ax][ay]+B);}
	if(ay<W-1 && by<W-1){int B=0;if(ax!=bx || ay!=by){B=a[bx][by];}maxn=max(maxn,solve(ax,ay+1,bx,by+1)+a[ax][ay]+B);}
	//cout<<ax<<' '<<ay<<' '<<bx<<' '<<by<<' '<<maxn<<endl;
	return maxn;
}
int main(){
	cin>>H>>W;for(int i=0;i<H;i++){for(int j=0;j<W;j++)cin>>a[i][j];}
	cout<<solve(0,0,0,0)+a[H-1][W-1]<<endl;
	return 0;
}