#include #include #include #include using namespace std; using uint = unsigned int; using ll = long long; using pii = pair; #define dbg(x) cerr<<#x": "<<(x)<<'\n' #define dbg_v(x, n) cerr<<#x"[]: ";for(long long _=0;_ v[MMAX]; vector> solv; vector x[NMAX]; ll sol[MMAX]; void solve(int i) { int j; ll suml, sumr; sort(x[i].begin(), x[i].end()); suml = 0; for (sumr = 0, j = 0; j < m; ++j) sumr += x[i][j].first; for (j = 0; j < m; ++j) { sol[x[i][j].second] += (1LL * j * x[i][j].first - suml) + (sumr - 1LL * (m - j) * x[i][j].first); suml += x[i][j].first; sumr -= x[i][j].first; } } int main() { #ifndef ONLINE_JUDGE ifstream cin("data.in"); ofstream cout("data.out"); #endif ios_base::sync_with_stdio(false); int i, j; ll dmin = 1000000000LL * 1000000000LL; cin >> m >> n; for (i = 0; i < m; ++i) { v[i].resize(n); for (j = 0; j < n; ++j) { cin >> v[i][j]; x[j].emplace_back(v[i][j], i); } } for (i = 0; i < n; ++i) solve(i); for (i = 0; i < m; ++i) dmin = min(dmin, sol[i]); //dbg_v(sol, 3); cout << dmin << '\n'; for (i = 0; i < m; ++i) if (dmin == sol[i]) solv.push_back(v[i]); sort(all(solv)); cout << solv.size() << '\n'; for (auto vv : solv) { for (i = 0; i < n; ++i) cout << vv[i] << ' '; cout << '\n'; } return 0; }