#include using namespace std; int i, n, j, m, x; long long mn = 1e18 + 69 * 69, meet[30], sum = 0; vector v[50005]; vector> rs; pair> 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; }