#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Maxn 200001
#define Max(a,b) ((a)>(b)?(a):(b))
int dp[Maxn][2];
//dp[i][0] 表示不取第i个能到的最大值
//dp[i][1] 表示取第i个能到的最大值
int row[Maxn];
int main()
{
int i, j, k;
int M, N;
int val;
while(scanf("%d%d", &M, &N) != EOF)
{
dp[0][0] = 0;
dp[0][1] = 0;
for(i = 1; i <= M; i++)
{
for(j = 1; j <= N; j++)
{
scanf("%d", &val);
dp[j][0] = Max(dp[j-1][0], dp[j-1][1]);
dp[j][1] = dp[j-1][0] + val;
}
row[i] = Max(dp[N][0], dp[N][1]);
}
dp[0][0] = 0;
dp[0][1] = 0;
for(i = 1; i <= M; i++)
{
dp[i][0] = Max(dp[i-1][0], dp[i-1][1]);
dp[i][1] = dp[i-1][0] + row[i];
}
printf("%d\n", Max(dp[M][1], dp[M][0]));
}
return 0;
}