rt,RE0pts
#include <bits/stdc++.h>
#define PII pair<int, int>
#define PIII pair<int, PII >
using namespace std;
int n, m, A, B, C, len, p[500005], cnt[500005];
int s[500005], sum[500005], ans[500005];
PII pii[500005];
PIII a[500005], b[500005];
int tr[500005];
bool cmp(int i, int j) {
return pii[i].first < pii[j].first ||
(pii[i].first == pii[j].first && pii[i].second < pii[j].second);
}
int lowbit(int x) { return x & -x; }
int init() { for (int i = 1; i <= m; i++) tr[i] = 0; }
void add(int p, int k) {
while (p <= m) {
tr[p] += k;
p += lowbit(p);
}
}
int query(int p) {
int ret = 0;
while (p) {
ret += tr[p];
p -= lowbit(p);
}
return ret;
}
void f(int l, int r) {
if (l == r) return;
int mid = (l + r) >> 1;
f(l, mid);
f(mid + 1, r);
init();
for (int i = l, j = mid + 1; j <= r; j++) {
while (i <= mid && pii[p[i]].first <= pii[p[j]].first) {
add(pii[p[i]].second, cnt[p[i]]);
i++;
}
sum[p[j]] += query(pii[p[j]].second);
}
int pl = l, pr = mid + 1, len = 0;
while (pl <= mid && pr <= r) {
if (cmp(p[pl], p[pr])) {
s[++len] = p[pl];
pl++;
}
else {
s[++len] = p[pr];
pr++;
}
}
for (int i = pl; i <= mid; i++) s[++len] = p[i];
for (int i = pr; i <= r; i++) s[++len] = p[i];
for (int i = 1; i <= len; i++) p[l + i - 1] = s[i], s[i] = 0;
}
int main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> A >> B >> C;
b[i] = a[i] = make_pair(A, make_pair(B, C));
}
sort(a + 1, a + n + 1);
len = unique(a + 1, a + n + 1) - a - 1;
for (int i = 1; i <= n; i++) cnt[lower_bound(a + 1, a + len + 1, b[i]) - a]++;
for (int i = 1; i <= len; i++) {
pii[i] = make_pair(a[i].second.first, a[i].second.second);
sum[i] = cnt[i];
p[i] = i;
}
f(1, len);
for (int i = 1; i <= len; i++) ans[sum[i]] += cnt[i];
for (int i = 1; i <= n; i++) cout << ans[i] << '\n';
return 0;
}