#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll n,m;
cin >> n >> m;
ll a[n][m];
ll dp[1<<m];
ll guy[1<<m];
// is it possible to make 01110101 where 1s can be 0s
memset(dp,0,sizeof(dp));
memset(guy,0,sizeof(guy));
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];
}
guy[num]++;
}
if (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;
}
pair<ll,ll> dpmx[1<<m];
for (int i=0;i<(1<<m);i++){
for (int j=0;j<=i;j++){
if ((i|j)!=i) continue;
dp[i] += guy[j];
}
ll zero = __builtin_popcount(~i);
if (dp[i] >= 2) dpmx[i] = {zero,zero};
else if (dp[i] == 1) dpmx[i] = {zero,0};
else dpmx[i] = {0,0};
}
pair<ll,ll> dp2[1<<m];
// max 0s
for (int i=0;i<(1<<m);i++){
dp2[i] = {0,0};
for (int j=0;j<(1<<m);j++){
if (dp[j] == 0) continue;
if ((i&j)==i){
if (dpmx[j].first > dp2[i].first){
dp2[i] = {dpmx[j].first, max(dp2[i].first,dpmx[j].second)};
}
else{
dp2[i].second = max(dp2[i].second, dpmx[j].first);
}
}
}
}
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--;
}
}
ll me = 0;
for (int j=0;j<m;j++){
if (useless&(1<<j)) continue;
me += 1-a[i][j];
}
if (dp2[useless].first == me){
cout << cnt + dp2[useless].second << "\n";
}
else cout << cnt + dp2[useless].first << "\n";
}
}