rt
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef long long ll;
const int N = 100 + 5;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
int graph[N][N];
int n, m;
int dp[N][N];
bool check(int x, int y){
if (x < 1 || x > n || y < 1 || y > m)
return 0;
return 1;
}
int dfs(int x, int y){
if (x == 1 && y == 1){
return graph[1][1];
}
if (dp[x][y])
return dp[x][y];
if (check(x - 1, y - 1))
dp[x][y] = dfs(x - 1, y - 1);
if (check(x, y - 1))
dp[x][y] = max(dp[x][y], dfs(x , y - 1));
if (check(x + 1, y - 1))
dp[x][y] = max(dp[x][y], dfs(x + 1, y - 1));
return dp[x][y] += graph[x][y];
}
int main ( int argc, char *argv[] )
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> graph[i][j];
for (int i = 2; i <= n; i++)
for (int j = 1; j < i; j++)
graph[i][j] = 0;
int x = dfs(n, m);
cout << x << endl;
return 0;
} /* ---------- end of function main ---------- */