#include<iostream>#include<vector>usingnamespacestd;
vector<vector<int> >A;
int N, M;
int max(int i, int j)
{
return i > j ? i : j;
}
int dfs(int i, int j)
{
if (i == N || j == M)
return0;
elseif (i == N - 1 && j == M - 1)
return A[i][j];
elsereturn max(dfs(i + 1, j), dfs(i, j + 1)) + A[i][j];
}
void init()
{
int t;
vector<int>X;
while (cin >> N >> M)
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
cin >> t;
X.push_back(t);
}
A.push_back(X);
X.clear();
}
cout << dfs(0, 0) << endl;
A.clear();
}
}
int main()
{
init();
}