#include <bits/stdc++.h>
using namespace std;
int num[5];
int Abs(int a) { return a > 0 ? a : -a; }
vector<int> a[1500];
long long r[1500][1501];
long long mm[1501];
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  int i, j;
  for (i = 0; i < n; i++) {
    a[i].resize(m);
    for (j = 0; j < m; j++) {
      scanf("%d", &a[i][j]);
    }
  }
  r[0][0] = a[0][0];
  for (j = 1; j < m; j++) {
    r[0][j] = r[0][j - 1] + a[0][j];
  }
  for (i = 1; i < n; i++) {
    if (i & 1) {
      mm[m - 1] = r[i - 1][m - 1];
      for (j = m - 2; j >= 0; j--) mm[j] = max(mm[j + 1], r[i - 1][j]);
      long long s = 0;
      for (j = 0; j < m - 1; j++) {
        s += a[i][j];
        r[i][j] = s + mm[j + 1];
      }
    } else {
      mm[0] = r[i - 1][0];
      for (j = 1; j < m; j++) mm[j] = max(mm[j - 1], r[i - 1][j]);
      long long s = a[i][0];
      for (j = 1; j < m; j++) {
        s += a[i][j];
        r[i][j] = s + mm[j - 1];
      }
    }
  }
  long long b = -1000000000000000LL;
  if (n == 1) {
    for (int i = 0; i < m; i++) b = max(b, r[n - 1][i]);
  } else {
    if (n & 1) {
      for (int i = 1; i < m; i++) b = max(b, r[n - 1][i]);
    } else {
      for (int i = 0; i < m - 1; i++) b = max(b, r[n - 1][i]);
    }
  }
  printf("%lld", b);
  return 0;
}
