#include <stdio.h>
#define N 300000
#define M 20
int a[N], votes[M], cnt[1 << M][2], p[1 << M], dp[1 << M][4];
int popcount(int x) { return __builtin_popcount(x); }
int max(int a, int b) { return a > b ? a : b; }
void swap(int *a, int *b) { *a ^= *b, *b ^= *a, *a ^= *b; }
void add(int m, int v, int i) {
if (dp[m][2] == i) {
dp[m][0] = max(dp[m][0], v);
} else if (dp[m][3] == i) {
dp[m][1] = max(dp[m][1], v);
} else {
if (v >= dp[m][0]) {
dp[m][1] = dp[m][0], dp[m][3] = dp[m][2];
dp[m][0] = v, dp[m][2] = i;
} else if (v >= dp[m][1]) {
dp[m][1] = v, dp[m][3] = i;
}
}
if (dp[m][0] < dp[m][1]) {
swap(&dp[m][0], &dp[m][1]), swap(&dp[m][2], &dp[m][3]);
}
}
int main() {
int n, m;
scanf("%d%d", &n, &m);
for (int i = 0; i < n; ++i) {
for (int j = 0, x; j < m; ++j) {
scanf("%d", &x);
a[i] = (a[i] << 1) | x;
votes[m - j - 1] += x;
}
int b = ~a[i] & ((1 << m) - 1);
if (p[b] < 2) {
cnt[b][p[b]++] = i;
}
}
for (int i = 0; i < m; ++i) {
for (int mask = (1 << m) - 1; mask >= 0; --mask) {
if (mask & 1 << i) {
for (int j = 0; j < p[mask]; ++j) {
if (p[mask ^ 1 << i] < 2) {
cnt[mask ^ 1 << i][p[mask ^ 1 << i]++] = cnt[mask][j];
}
}
}
}
}
for (int mask = 0; mask < 1 << m; ++mask) {
for (int i = 0; i < p[mask]; ++i) {
add(mask, popcount(mask), cnt[mask][i]);
}
}
for (int i = 0; i < m; ++i) {
for (int mask = 0; mask < 1 << m; ++mask) {
if (mask & 1 << i) {
add(mask, dp[mask ^ 1 << i][0], dp[mask ^ 1 << i][2]);
add(mask, dp[mask ^ 1 << i][1], dp[mask ^ 1 << i][3]);
}
}
}
for (int i = 0; i < n; ++i) {
int cur = 0, mask = 0;
for (int j = 0; j < m; ++j) {
if (votes[j] - !!(a[i] & 1 << j) == n >> 1) {
mask |= 1 << j;
}
cur += votes[j] - !!(a[i] & 1 << j) > n >> 1;
}
printf("%d\n", cur + dp[mask][dp[mask][2] == i]);
}
}