#include using namespace std; const int nmax = 50005; const int kmax = 35; long long in[kmax][nmax] , a[nmax][kmax] , sum[kmax][nmax]; long long n , m , i , j , add , now , p[nmax] , S , bst , lw , hg , ret , mid; vector < int > v[nmax]; int main() { //freopen("test.in" , "r" , stdin); //freopen("test.out" , "w" , stdout); cin >> n >> m; for (i = 1 ; i <= n ; ++i) { for (j = 1 ; j <= m ; ++j) { cin >> a[i][j]; in[j][i] = a[i][j]; } } for (i = 1 ; i <= m ; ++i) { sort(in[i] + 1 , in[i] + n + 1); for (j = 1 ; j <= n ; ++j) sum[i][j] = sum[i][j - 1] + in[i][j]; } bst = 1000000000000000000LL; for (i = 1 ; i <= n ; ++i) { now = 0; for (j = 1 ; j <= m ; ++j) { lw = 1 , hg = n; while (lw <= hg) { mid = (lw + hg) / 2; if (a[i][j] >= in[j][mid]) ret = mid , lw = mid + 1; else hg = mid - 1; } add = ret * a[i][j] - sum[j][ret] + sum[j][n] - sum[j][ret] - (n - ret) * a[i][j]; now += add; } if (now < bst) S = 0 , bst = now; if (now == bst) p[++S] = i; } cout << bst << '\n'; cout << S << '\n'; for (i = 1 ; i <= S ; ++i) { for (j = 1 ; j <= m ; ++j) v[i].push_back(a[p[i]][j]); } sort(v + 1 , v + S + 1); for (i = 1 ; i <= S ; ++i) { for (j = 0 ; j < m ; ++j) cout << v[i][j] << " "; cout << '\n'; } return 0; }