#include #include #include #include #include #include #include #include using namespace std; #define x first #define y second #define MOD 666013 #define NMAX 50005 int n,m, mat[NMAX][30], ord[NMAX], v[NMAX], cnt; pair interv[NMAX]; long long answer; int cmp(const int& a, const int& b){ for(int i = 1; i <= m; i++) if(mat[a][i] != mat[b][i]) return mat[a][i] < mat[b][i]; return a < b; } int condition(int index){ for(int i = 1; i <= m; i++) if(!(interv[i].x <= mat[index][i] && mat[index][i] <= interv[i].y)) return 0; return 1; } int main (){ scanf("%d%d",&n,&m); for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) scanf("%d",&mat[i][j]); for(int i = 1; i <= m; i++){ for(int j = 1; j <= n; j++) v[j] = mat[j][i]; sort(v + 1, v + n + 1); if(n & 1) interv[i] = make_pair(v[n / 2 + 1], v[n / 2 + 1]); else interv[i] = make_pair(v[n / 2], v[n / 2 + 1]); for(int j = 1; j <= n; j++) answer += (j <= n / 2 + 1 ? interv[i].y - v[j] : v[j] - interv[i].y); } for(int i = 1; i <= n; i++) ord[i] = i; sort(ord + 1, ord + n + 1,cmp); for(int i = 1; i <= n; i++){ if(condition(ord[i])) cnt++; } printf("%lld\n%d\n", answer, cnt); for(int i = 1; i <= n; i++){ if(condition(ord[i])){ for(int j = 1; j <= m; j++) printf("%d ", mat[ord[i]][j]); printf("\n"); } } return 0; }