/*
填表
先填第一行
然后一直填到最后一行
遵循只填大数的原则
最后输出表尾元素即可
*/
#define LOCAL
#include<iostream>
#define N 100
using namespace std;
int a[N][N],opt[N][N];
void nummax(int m,int n)
{
int i,j;
opt[0][0]=a[0][0];
for(i=1;i<n;i++)
opt[0][i]=opt[0][i-1]+a[0][i];
for(i=1;i<m;i++)
{
opt[i][0]=opt[i-1][0]+a[i][0];
for(j=1;j<n;j++)
opt[i][j]=a[i][j]+(opt[i-1][j]>opt[i][j-1]?opt[i-1][j]:opt[i][j-1]);
}
}
int main()
{
#ifdef LOCAL
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int m,n,i,j;
while(cin>>m>>n)
{
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
memset(opt,0,sizeof(opt));
nummax(m,n);
/*
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<opt[i][j]<<" ";
}
cout<<endl;
}
*/
cout<<opt[m-1][n-1]<<endl;
}
return 0;
}