#include <iostream>
#include <cmath>
#include <iomanip>
#include <map>
#include <climits>
#include <set>
#include <algorithm>
#include <vector>
using namespace std;
const int MOD = 1000000007;
int n, m;
int a[500][500];
bool visited[500][500];
int dx[8] = { -1,-1,-1,0,0,1,1,1 };
int dy[8] = { -1,0,1,-1,1,-1,0,1 };
void dfs(int x, int y) {
visited[x][y] = true;
for (int i = 0;i < 8;i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (nx >= 0 && nx < n && ny >= 0 && ny < m && a[nx][ny] == 1 && !visited[nx][ny]) {
dfs(nx, ny);
}
}
}
int main() {
cin >> n >> m;
for (int i = 0;i < n;i++) {
for (int j = 0;j < m;j++) {
cin >> a[i][j];
}
}
long long dp[100][100];
// dp[i][j] là đường đi có tổng lớn nhất từ [1,1] đến [i,j]
dp[0][0] = a[0][0];
for (int i = 0;i < n;i++) {
for (int j = 0;j < m;j++) {
if (i == 0 && j == 0) continue;
long long top = (i > 0) ? dp[i - 1][j] : 0;
long long left = (j > 0) ? dp[i][j - 1] : 0;
dp[i][j] = a[i][j] + max(top, left);
}
}
cout << dp[n - 1][m - 1];
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Y2xpbWl0cz4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBNT0QgPSAxMDAwMDAwMDA3OwoKCmludCBuLCBtOwppbnQgYVs1MDBdWzUwMF07CmJvb2wgdmlzaXRlZFs1MDBdWzUwMF07CgppbnQgZHhbOF0gPSB7IC0xLC0xLC0xLDAsMCwxLDEsMSB9OwppbnQgZHlbOF0gPSB7IC0xLDAsMSwtMSwxLC0xLDAsMSB9OwoKdm9pZCBkZnMoaW50IHgsIGludCB5KSB7Cgl2aXNpdGVkW3hdW3ldID0gdHJ1ZTsKCWZvciAoaW50IGkgPSAwO2kgPCA4O2krKykgewoJCWludCBueCA9IHggKyBkeFtpXTsKCQlpbnQgbnkgPSB5ICsgZHlbaV07CgoJCWlmIChueCA+PSAwICYmIG54IDwgbiAmJiBueSA+PSAwICYmIG55IDwgbSAmJiBhW254XVtueV0gPT0gMSAmJiAhdmlzaXRlZFtueF1bbnldKSB7CgkJCWRmcyhueCwgbnkpOwoJCX0KCX0KfQoKaW50IG1haW4oKSB7CgoJY2luID4+IG4gPj4gbTsKCWZvciAoaW50IGkgPSAwO2kgPCBuO2krKykgewoJCWZvciAoaW50IGogPSAwO2ogPCBtO2orKykgewoJCQljaW4gPj4gYVtpXVtqXTsKCQl9Cgl9Cglsb25nIGxvbmcgZHBbMTAwXVsxMDBdOwoJLy8gZHBbaV1bal0gbMOgIMSRxrDhu51uZyDEkWkgY8OzIHThu5VuZyBs4bubbiBuaOG6pXQgdOG7qyBbMSwxXSDEkeG6v24gW2ksal0KCglkcFswXVswXSA9IGFbMF1bMF07Cglmb3IgKGludCBpID0gMDtpIDwgbjtpKyspIHsKCQlmb3IgKGludCBqID0gMDtqIDwgbTtqKyspIHsKCQkJaWYgKGkgPT0gMCAmJiBqID09IDApIGNvbnRpbnVlOwoJCQlsb25nIGxvbmcgdG9wID0gKGkgPiAwKSA/IGRwW2kgLSAxXVtqXSA6IDA7CgkJCWxvbmcgbG9uZyBsZWZ0ID0gKGogPiAwKSA/IGRwW2ldW2ogLSAxXSA6IDA7CgkJCWRwW2ldW2pdID0gYVtpXVtqXSArIG1heCh0b3AsIGxlZnQpOwoJCX0KCX0KCWNvdXQgPDwgZHBbbiAtIDFdW20gLSAxXTsKfSAKCgoKCgo=