#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("date.in");
#define MAXM 50010
#define MAXN 27
//#define fin cin
vector<vector<int> > solution;
vector<int> aux;
int a[MAXM][MAXN];
long long rez[MAXM];
pair<int, int> v[MAXN][MAXM];
int n, m;
void solve(int dim){
    int i;
    sort(v[dim] + 1, v[dim] + m + 1);
    long long sum = 0;
    for(i = 1 ; i <= m ; i++)
    {
        sum += (v[dim][i].first - v[dim][1].first);
    }
    rez[v[dim][1].second] += sum;
    for(i = 2 ; i <= m ; i++)
    {
        sum += 1ll * (2 * i - m - 2) * (v[dim][i].first - v[dim][i - 1].first);
        rez[v[dim][i].second] += sum;
    }
}

int main()
{
    int i, j;
    long long minimal;
    fin >> m >> n;
    for(i = 1 ; i <= m ; i++)
    {
        for(j = 1 ; j <= n ; j++)
        {
            fin >> a[i][j];
            v[j][i] = make_pair(a[i][j], i);
        }
    }
    for(j = 1 ; j <= n ; j++)
    {
        solve(j);
    }
    minimal = rez[1];
    for(i = 1 ; i <= m ; i++)
    {
        minimal = min(minimal, rez[i]);
    }
    int s = 0;
    for(i = 1 ; i <= m ; i++)
    {
        if(minimal == rez[i])
        {
            aux.clear();
            for(j = 1 ; j <= n ; j++)
                aux.push_back(a[i][j]);
            solution.push_back(aux);
        }
    }
    cout << minimal << "\n";
    cout << solution.size() << "\n";
    sort(solution.begin(), solution.end());
    for(auto it: solution){
        for(auto it2: it){
            cout << it2 << " ";
        }
        cout << "\n";
    }
    //
    return 0;
}