#include #include #include using namespace std; int v[50010][30]; long long sum[50010]; vector result; int n,m; bool comp(int a, int b){ int element = 1; while(element <= n){ if(v[a][element] > v[b][element]) return false; else if(v[a][element] == v[b][element]) element++; return true; } return true; } int getDist(int, int); int minimum = 99999999; int modulo(int); int main() { int i,j; cin >> m >> n; for(i = 1; i <= m; i++){ for(j = 1; j <= n; j++){ cin >> v[i][j]; } } for(i = 1; i <= m; i++) for(j = i + 1; j <= m; j++){ int x = getDist(i,j); sum[i] += x; sum[j] += x; } for(i = 1; i <= m; i++){ if(sum[i] < minimum){ result.clear(); minimum = sum[i]; result.push_back(i); } else if(sum[i] == minimum){ result.push_back(i); } } sort(result.begin(), result.end(), comp); cout << minimum << '\n'; int x = result.size(); cout << x << '\n'; for(i = 0; i < x; i++){ for(j = 1; j <= n; j++) cout << v[result[i]][j] << ' ';//coords of the houses, not indexes cout << '\n'; } return 0; } int getDist(int a, int b){ int sum = 0; for(int i = 1; i <= n; i++) sum += modulo(v[a][i]-v[b][i]); return sum; } int modulo(int x){ if(x < 0) return -x; return x; }