#include #include #include #define pii pair #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 sol; long long aabs (int a) { return 1LL * max (a, -a); } void del () { vector 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; }