#include <bits/stdc++.h>
using namespace std;

int i, n, j, m, x;
long long mn = 1e18 + 69 * 69, meet[30], sum = 0;
vector<int> v[50005];
vector<vector<int>> rs;

pair<long long, pair<long long, int>> check(long long x) {
  long long dist = 0, mn = 1e18, cnt = 0;

  for(int j = 1; j <= m; ++j) {
    dist += abs(v[j][i] - x);
    if(mn > abs(v[j][i] - x)) mn = abs(v[j][i] - x), cnt = 1;
    else if(mn == abs(v[j][i] - x)) ++cnt;
  }

  return make_pair(dist, make_pair(mn, -cnt));
}

int main() {
  ios_base::sync_with_stdio(0);

  cin >> m >> n;

  for(i = 1; i <= m; ++i)
    for(j = 0; j < n; ++j)
      cin >> x, v[i].push_back(x);

  for(i = 0; i < n; ++i) {
    long long st = -2e9, dr = 2e9, pivot;
    while(st <= dr) {
      pivot = (st + dr) / 2;
      if(check(pivot) < check(pivot + 1)) dr = pivot - 1;
      else st = pivot + 1;
    }

    for(st = pivot - 5; st <= dr + 5; ++st) {
      if(check(meet[i]) >= check(st)) meet[i] = st;
    }
  }

  for(i = 1; i <= m; ++i) {
    long long dist = 0;
    for(j = 0; j < n; ++j) dist += abs(v[i][j] - meet[j]);
    if(mn > dist) mn = dist;
  }

  for(i = 1; i <= m; ++i) {
    long long dist = 0;
    for(j = 0; j < n; ++j) dist += abs(v[i][j] - meet[j]);

    sum += dist;
    if(dist == mn) rs.push_back(v[i]);
  }

  sort(rs.begin(), rs.end());

  cout << sum << '\n';
  cout << rs.size() << '\n';
  for(auto v : rs) {
    for(auto it : v)
      cout << it << ' ';
    cout << '\n';
  }

  return 0;
}