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

using namespace std;

const long long inf=1e18;
vector<int> v[50010];
pair<int,int> v1[50010];
int v2[50010],n,m;
long long sol[50010];

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

int main()
{
    //freopen("file.in", "r", stdin);
    //freopen("file.out", "w", stdout);
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        v[i].resize(m+1);
        for(int j=1;j<=m;j++) scanf("%d",&v[i][j]);
    }
    for(int i=1;i<=m;i++)
    {
        for(int j=1;j<=n;j++) v1[j]={v[j][i],j};
        sort(v1+1,v1+1+n);
        long long sum=0,s=0;
        for(int j=1;j<=n;j++) sum+=v1[j].first;
        for(int j=1;j<=n;j++)
        {
            sol[v1[j].second]+=(1LL*v1[j].first*(j-1))-s+sum-(1LL*v1[j].first*(n-j+1));
            s+=v1[j].first;
            sum-=v1[j].first;
        }
    }
    long long minn=inf;
    for(int i=1;i<=n;i++) minn=min(minn,sol[i]);
    int nr=0;
    for(int i=1;i<=n;i++)
        if(sol[i]==minn) v2[++nr]=i;
    sort(v2+1,v2+1+nr,cmp);
    printf("%lld\n%d\n",minn,nr);
    for(int i=1;i<=nr;i++)
    {
        for(int j=1;j<=m;j++) printf("%d ",v[v2[i]][j]);
        printf("\n");
    }
    return 0;
}