#include <iostream>
#include <vector>
using namespace std;
void prin(int n, int M) {
for (int i=M-1; i>=0; --i){
cout << ((n & (1 << i)) > 0);
}
cout << '\n';
}
void solve(){
int N, M; cin >> N >> M;
vector<int> msk(N);
vector<int> votes(M, 0);
for (int i=0; i<N; ++i){
int s=0;
for (int j=0; j<M; ++j){
int x; cin >> x;
votes[j] += x;
s = (s << 1) + x;
}
msk[i] = s;
}
int mskVote=0;
int plus=0;
int nM=M;
for (int i=0; i<M; ++i){
if (votes[i] < N/2){
--nM;
votes[i] = -1;
} else if (votes[i]-2 >= N/2){
++plus; --nM;
votes[i] = -1;
} else if (votes[i] == N/2){
mskVote = (mskVote << 1) + 0;
} else if (votes[i]-1 == N/2){
mskVote = (mskVote << 1) + 1;
}
}
for (int i=0; i<N; ++i){
int ns=0;
for (int j=0; j<M; ++j){
if (votes[j] != -1){
ns = (ns << 1) + ((msk[i] & (1<<(M-j-1))) > 0);
}
}
msk[i] = ns;
}
int pt = (1 << nM)-1;
for (int i=0; i<N; ++i){
int res=0;
int k = mskVote ^ msk[i];
int v = __builtin_popcount(mskVote & (pt - msk[i]));
for (int j=0; j<N; ++j){
if (j == i) continue;
int nv = __builtin_popcount((pt - k) & (pt-msk[j]));
res = max(res, v + nv);
}
cout << res + plus << '\n';
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
solve();
return 0;
}