#include<bits/stdc++.h>
using namespace std;
#define mem(a, b) memset(a, b, sizeof(a));
using ld = long double;
using ll = long long;
int INF = 1e9;
long long LINF = 9e18;
double EPS = 1e-9;
double PI = acos(-1.0);
static int donotused = []() {
ios_base::sync_with_stdio(false); cin.tie(0);
#ifndef ONLINE_JUDGE
(void)!freopen("P3810.in", "r", stdin);
(void)!freopen("P3810.out", "w", stdout);
#endif
return 0;
}();
const int maxn = 100010;
struct node {
int i, v;
}a[maxn], b[maxn], c[maxn];
bool cmp(node a, node b) {
return a.v > b.v;
}
int ansa[maxn], ansb[maxn], ansc[maxn], ret[maxn], res, n, k;
int main() {
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> a[i].v >> b[i].v >> c[i].v;
a[i].i = i;
b[i].i = i;
c[i].i = i;
}
stable_sort(a + 1, a + n + 1, cmp);
stable_sort(b + 1, b + n + 1, cmp);
stable_sort(c + 1, c + n + 1, cmp);
for (int i = 1; i <= n; i++) {
ansa[a[i].i] = i;
ansb[b[i].i] = i;
ansc[c[i].i] = i;
}
for (int i = 1; i <= n; i++) {
int ma = max(ansa[i], ansb[i]);
ma = max(ma, ansc[i]);
cout << n - ma << endl;
ret[n - ma]++;
}
for (int i = 0; i < n; i++) {
cout << ret[i] << endl;
}
return 0;
}