#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
const int Nmax = 50005;

ll ans = LLONG_MAX, dist[Nmax], S[Nmax];
int i, j, n, m, ap;
vector<int> start[Nmax];
vector< pair<int,int> > v[30];
vector< vector<int> > sol;

int main()
{
 //   freopen("input", "r", stdin);
   // freopen("output", "w", stdout);

    cin >> n >> m;
    for(i=0; i<m; ++i) v[i].resize(n);

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

    for(i=0; i<m; ++i)
    {
        sort(v[i].begin(), v[i].end());
        S[0] = v[i][0].first;
        for(j=1; j<n; ++j)
            S[j] = S[j-1] + v[i][j].first;

        for(j=0; j<n; ++j)
            dist[v[i][j].second] += (1LL * v[i][j].first * (j+1) - S[j]) + (S[n-1] - S[j] - 1LL * v[i][j].first * (n-j-1));
    }


    for(i=0; i<n; ++i)
        ans = min(ans, dist[i]);

    cout << ans << '\n';

    for(i=0; i<n; ++i)
        if(dist[i] == ans) sol.push_back(start[i]);

    sort(sol.begin(), sol.end());
    cout << sol.size() << '\n';

    for(auto v : sol)
    {
        for(auto it : v) cout << it << " ";
        cout << '\n';
    }
    return 0;
}