#include <bits/stdc++.h>
using namespace std;
using uint = unsigned int;
using ll = long long;
using pii = pair<int, int>;
#define dbg(x) cerr<<#x": "<<(x)<<'\n'
#define dbg_v(x, n) cerr<<#x"[]: ";for(long long _=0;_<n;++_)cerr<<(x)[_]<<' ';cerr<<'\n'
#define all(v) v.begin(), v.end()
#define MMAX 50010
#define NMAX 27

int m, n;
vector<int> v[MMAX];
vector<vector<int>> solv;
vector<pii> x[NMAX];
ll sol[MMAX];

void solve(int i)
{
	int j;
	ll suml, sumr;

	sort(x[i].begin(), x[i].end());
	suml = 0;
	for(sumr = 0, j = 0; j < m; ++j) sumr += x[i][j].first;

	for(j = 0; j < m; ++j)
	{
		sol[x[i][j].second] += (1LL * j * x[i][j].first - suml) + (sumr - 1LL * (m - j) * x[i][j].first);
		suml += x[i][j].second;
		sumr -= x[i][j].second;
	}
}

int main()
{
#ifndef ONLINE_JUDGE
	ifstream cin("data.in");
	ofstream cout("data.out");
#endif
	ios_base::sync_with_stdio(false);

	int i, j;
	ll dmin = 1000000000LL * 1000000000LL;

	cin >> m >> n;
	for(i = 0; i < m; ++i)
	{
		v[i].resize(n);
		for(j = 0; j < n; ++j)
		{
			cin >> v[i][j];
			x[j].emplace_back(v[i][j], i);
		}
	}

	for(i = 0; i < n; ++i)
		solve(i);

	for(i = 0; i < m; ++i)
		dmin = min(dmin, sol[i]);

	cout << dmin << '\n';

	for(i = 0; i < m; ++i)
		if(dmin == sol[i])
			solv.push_back(v[i]);

	sort(all(solv));

	cout << solv.size() << '\n';
	for(auto vv : solv)
	{
		for(i = 0; i < n; ++i)
			cout << vv[i] << ' ';
		cout << '\n';
	}

	return 0;
}