#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll n,m;
cin >> n >> m;
ll a[n][m];
vector<pair<ll,ll>> dp[1<<m][m+1];
vector<ll> guy[1<<m];
// is it possible to make 01110101 where 1s can be 0s
ll sum[m+1];
memset(sum,0,sizeof(sum));
for (int i=0;i<n;i++){
ll num = 0;
ll cnt = 0;
for (int j=0;j<m;j++){
cin >> a[i][j];
num += (a[i][j]<<j);
if (a[i][j]==1) cnt++;
sum[j] += a[i][j];
}
if (guy[num].size() < 2) guy[num].push_back(i);
}
if (0==1 && n<=3000){
for (int i=0;i<n;i++){
ll ans = 0;
for (int j=0;j<n;j++){
if (i==j) continue;
ll cnt = 0;
for (int k=0;k<m;k++){
if (sum[k] - a[i][k] - a[j][k] >= n/2) cnt++;
}
ans = max(ans,cnt);
}
cout << ans << "\n";
}
return 0;
}
for (int i=0;i<(1<<m);i++){
ll zero = m-__builtin_popcount(i);
for (ll guyy:guy[i]){
if (dp[i][0].size() < 2) dp[i][0].push_back({zero,guyy});
}
}
for (int k=1;k<=m;k++){
for (int i=0;i<(1<<m);i++){
ll zero = m-__builtin_popcount(i);
dp[i][k] = dp[i][k-1];
if (i&(1<<(k-1))){
for (pair<ll,ll> guyy:dp[i^(1<<(k-1))][k-1]){
if (dp[i][k].size() < 2) dp[i][k].push_back({zero,guyy.second});
}
}
}
}
pair<pair<ll,ll>,pair<ll,ll>> dp2[1<<m][m+1]; //val, idx
// max 0s
for (int i=0;i<(1<<m);i++){
dp2[i][0] = {{0,-1},{0,-1}};
for (pair<ll,ll> nd:dp[i][m]){
if (nd.first > dp2[i][0].first.first){
if (nd.second == dp2[i][0].second.second) dp2[i][0] = {nd,dp2[i][0].first};
else dp2[i][0].first = nd;
}
else if (nd.first > dp2[i][0].second.first){
if (nd.second != dp2[i][0].first.second) dp2[i][0].second = nd;
}
}
}
for (int k=1;k<=m;k++){
for (int i=0;i<(1<<m);i++){
dp2[i][k] = dp2[i][k-1];
if (!i&(1<<(k-1))){
for (pair<ll,ll> nd:dp[i^(1<<(k-1))][m]){
if (nd.first > dp2[i][k].first.first){
if (nd.second == dp2[i][k].second.second) dp2[i][k] = {nd,dp2[i][k].first};
else dp2[i][k].first = nd;
}
else if (nd.first > dp2[i][k].second.first){
if (nd.second != dp2[i][k].first.second) dp2[i][k].second = nd;
}
}
}
}
}
ll cutoff = n/2;
for (int i=0;i<n;i++){
ll useless = 0;
ll cnt = 0;
ll num = m;
for (int j=0;j<m;j++){
if (sum[j]-a[i][j] > cutoff){
cnt++;
}
if (sum[j]-a[i][j] != cutoff){
useless += (1<<j);
num--;
}
}
if (dp2[useless][m].first.second == i) cnt += dp2[useless][m].second.first;
else cnt += dp2[useless][m].first.first;
cout << cnt << "\n";
}
}