#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using ld = long double;
const int mod = 1e9 + 7;
const ll inf = 2e9;
const ll INF = 2e18;
const ld EPS = 1e-7;
const int N = 1e5 + 55;
ll sx[N], sy[N];
void solve() {
  int n, m;
  cin >> n >> m;
  vector<vector<int>> a(n, vector<int>(m));
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      cin >> a[i][j];
      sx[i] += a[i][j];
      sy[j] += a[i][j];
    }
  }
  ll mx = 0;
  vector<ll> v;
  for (int i = 0; i < n; ++i) {
    v.clear();
    for (int j = 0; j < m; ++j) {
      v.push_back(sy[j] - a[i][j]);
      sort(v.rbegin(), v.rend());
      while (v.size() > 3) {
        v.pop_back();
      }
    }
    ll cur = sx[i];
    for (ll a : v) {
      cur += a;
    }
    mx = max(mx, cur);
  }
  for (int j = 0; j < m; ++j) {
    v.clear();
    for (int i = 0; i < n; ++i) {
      v.push_back(sx[i] - a[i][j]);
      sort(v.rbegin(), v.rend());
      while (v.size() > 3) {
        v.pop_back();
      }
    }
    ll cur = sy[j];
    for (ll a : v) {
      cur += a;
    }
    mx = max(mx, cur);
  }
  if (n > m) {
    for (int i = 0; i < m; ++i) {
      for (int k = i + 1; k < m; ++k) {
        v.clear();
        for (int j = 0; j < n; ++j) {
          v.push_back(sx[j] - a[j][i] - a[j][k]);
          sort(v.rbegin(), v.rend());
          while (v.size() > 2) {
            v.pop_back();
          }
        }
        ll cur = sy[i] + sy[k];
        for (ll a : v) {
          cur += a;
        }
        mx = max(mx, cur);
      }
    }
  } else {
    for (int i = 0; i < n; ++i) {
      for (int k = i + 1; k < n; ++k) {
        v.clear();
        for (int j = 0; j < m; ++j) {
          v.push_back(sy[j] - a[i][j] - a[k][j]);
          sort(v.rbegin(), v.rend());
          while (v.size() > 2) {
            v.pop_back();
          }
        }
        ll cur = sx[i] + sx[k];
        for (ll a : v) {
          cur += a;
        }
        mx = max(mx, cur);
      }
    }
  }
  sort(sx, sx + n);
  sort(sy, sy + m);
  for (ll i = n - 1, sum = 0; i >= max(0, n - 4); --i) {
    sum += sx[i];
    mx = max(mx, sum);
  }
  for (ll i = m - 1, sum = 0; i >= max(0, m - 4); --i) {
    sum += sy[i];
    mx = max(mx, sum);
  }
  cout << mx;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  ;
  int tt = 1;
  while (tt--) {
    solve();
    cout << "\n";
  }
}
