#include <cstdio>
#include <algorithm>
#include <vector>

#define pii pair <int, int>
#define f first
#define s second

using namespace std;

int n, m;
int v[50010][32];
pii vv[50010];

long long st[50010][32], dr[50010][32];
vector <int> sol;

long long aabs (int a)
{
    return 1LL * max (a, -a);
}

void del ()
{
    vector <int> aux;
    aux.swap (sol);
}

bool cmp (int a, int b)
{
    for (int i = 1; i <= m; ++i)
        if (v[a][i] == v[b][i]);
        else if (v[a][i] > v[b][i]) return false;
        else return true;

    return true;
}

int main ()
{
    //freopen ("file.in", "r", stdin);

    scanf ("%d %d", &n, &m);

    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            scanf ("%d", &v[i][j]);

    for (int j = 1; j <= m; ++j)
    {
        for (int i = 1; i <= n; ++i)
            vv[i] = {v[i][j], i};

        sort (vv + 1, vv + n + 1);

        for (int i = 1; i <= n; ++i)
            st[i][j] = st[i - 1][j] + 1LL * (i - 1) * aabs (vv[i].f - vv[i - 1].f);

        for (int i = n; i; --i)
        {
            dr[i][j] = dr[i + 1][j] + 1LL * (n - i) * aabs (vv[i].f - vv[i + 1].f);
            st[i][j] += dr[i][j];
        }

        for (int i = 1; i <= n; ++i)
            dr[vv[i].s][j] = st[i][j];
    }

    long long mi = 9000000000000000000LL;
    for (int i = 1; i <= n; ++i)
    {
        long long sum = 0LL;
        for (int j = 1; j <= m; ++j)
            sum += dr[i][j];

        if (mi > sum)
        {
            del ();
            mi = sum;
            sol.push_back (i);
        }

        else if (mi == sum) sol.push_back (i);
    }

    printf ("%lld\n", mi);
    printf ("%d\n", sol.size ());

    sort (sol.begin (), sol.end (), cmp);

    for (auto &it : sol)
    {
        for (int i = 1; i <= m; ++i)
            printf ("%d ", v[it][i]);

        printf ("\n");
    }

    return 0;
}