#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n, m, ans = 0, i, j, k, max1, max2, max3, max4;
  cin >> n >> m;
  static vector<vector<long long> > a(n + 1, vector<long long>(m + 1, 0));
  static vector<long long> hsum(n + 1, 0), lsum(m + 1, 0);
  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++) {
      cin >> a[i][j];
      hsum[i] += a[i][j];
      lsum[j] += a[i][j];
    }
  max1 = max2 = max3 = max4 = 0;
  for (i = 1; i <= n; i++)
    if (hsum[i] > hsum[max1]) max1 = i;
  if (n > 1)
    for (i = 1; i <= n; i++)
      if (i != max1 && hsum[i] > hsum[max2]) max2 = i;
  if (n > 2)
    for (i = 1; i <= n; i++)
      if (i != max1 && i != max2 && hsum[i] > hsum[max3]) max3 = i;
  if (n > 3)
    for (i = 1; i <= n; i++)
      if (i != max1 && i != max2 && i != max3 && hsum[i] > hsum[max4]) max4 = i;
  ans = max(ans, hsum[max1] + hsum[max2] + hsum[max3] + hsum[max4]);
  max1 = max2 = max3 = max4 = 0;
  for (i = 1; i <= m; i++)
    if (lsum[i] > lsum[max1]) max1 = i;
  if (m > 1)
    for (i = 1; i <= m; i++)
      if (i != max1 && lsum[i] > lsum[max2]) max2 = i;
  if (m > 2)
    for (i = 1; i <= m; i++)
      if (i != max1 && i != max2 && lsum[i] > lsum[max3]) max3 = i;
  if (m > 3)
    for (i = 1; i <= m; i++)
      if (i != max1 && i != max2 && i != max3 && lsum[i] > lsum[max4]) max4 = i;
  ans = max(ans, lsum[max1] + lsum[max2] + lsum[max3] + lsum[max4]);
  for (j = 1; j <= n; j++) {
    for (i = 1; i <= m; i++) lsum[i] -= a[j][i];
    max1 = max2 = max3 = 0;
    for (i = 1; i <= m; i++)
      if (lsum[i] > lsum[max1]) max1 = i;
    if (m > 1)
      for (i = 1; i <= m; i++)
        if (i != max1 && lsum[i] > lsum[max2]) max2 = i;
    if (m > 2)
      for (i = 1; i <= m; i++)
        if (i != max1 && i != max2 && lsum[i] > lsum[max3]) max3 = i;
    ans = max(ans, hsum[j] + lsum[max1] + lsum[max2] + lsum[max3]);
    for (i = 1; i <= m; i++) lsum[i] += a[j][i];
  }
  for (j = 1; j <= m; j++) {
    for (i = 1; i <= n; i++) hsum[i] -= a[i][j];
    max1 = max2 = max3 = 0;
    for (i = 1; i <= n; i++)
      if (hsum[i] > hsum[max1]) max1 = i;
    if (n > 1)
      for (i = 1; i <= n; i++)
        if (i != max1 && hsum[i] > hsum[max2]) max2 = i;
    if (n > 2)
      for (i = 1; i <= n; i++)
        if (i != max1 && i != max2 && hsum[i] > hsum[max3]) max3 = i;
    ans = max(ans, lsum[j] + hsum[max1] + hsum[max2] + hsum[max3]);
    for (i = 1; i <= n; i++) hsum[i] += a[i][j];
  }
  if (n == 1 || m == 1) {
    cout << ans << endl;
    return 0;
  }
  if (n < m) {
    for (k = 1; k <= n; k++)
      for (j = k + 1; j <= n; j++) {
        for (i = 1; i <= m; i++) lsum[i] -= a[j][i] + a[k][i];
        max1 = max2 = 0;
        for (i = 1; i <= m; i++)
          if (lsum[i] > lsum[max1]) max1 = i;
        for (i = 1; i <= m; i++)
          if (i != max1 && lsum[i] > lsum[max2]) max2 = i;
        ans = max(ans, hsum[j] + hsum[k] + lsum[max1] + lsum[max2]);
        for (i = 1; i <= m; i++) lsum[i] += a[j][i] + a[k][i];
      }
  } else {
    for (k = 1; k <= m; k++)
      for (j = k + 1; j <= m; j++) {
        for (i = 1; i <= n; i++) hsum[i] -= a[i][j] + a[i][k];
        max1 = max2 = 0;
        for (i = 1; i <= n; i++)
          if (hsum[i] > hsum[max1]) max1 = i;
        for (i = 1; i <= n; i++)
          if (i != max1 && hsum[i] > hsum[max2]) max2 = i;
        ans = max(ans, lsum[j] + lsum[k] + hsum[max1] + hsum[max2]);
        for (i = 1; i <= n; i++) hsum[i] += a[i][j] + a[i][k];
      }
  }
  cout << ans << endl;
  return 0;
}
