#include <bits/stdc++.h>
using namespace std;
struct node {
int d,c,x;
}arr[350000];
bool cmp(node a,node b){
return a.d<b.d;
}
int n,m,t[350000],sum;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>arr[i].c>>arr[i].d>>arr[i].x;
t[arr[i].c]++;
}
for(int i=1;i<=n;i++){
if(t[i]>=1){
sum++;
}
}
sort(arr+1,arr+1+n,cmp);
int l=1;
for(int i=1;i<=m;i++){
while(i>=arr[l].d && l<=n){
if(t[arr[l].x]==0){
sum++;
}
t[arr[l].x]++;
if(t[arr[l].c]==1){
sum--;
}
t[arr[l].c]--;
l++;
}
cout<<sum;
cout<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBub2RlIHsKCWludCBkLGMseDsKfWFyclszNTAwMDBdOwpib29sIGNtcChub2RlIGEsbm9kZSBiKXsKCXJldHVybiBhLmQ8Yi5kOwp9CmludCBuLG0sdFszNTAwMDBdLHN1bTsKaW50IG1haW4oKXsKCWNpbj4+bj4+bTsKCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQljaW4+PmFycltpXS5jPj5hcnJbaV0uZD4+YXJyW2ldLng7CgkJdFthcnJbaV0uY10rKzsKCX0KCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQlpZih0W2ldPj0xKXsKCQkJc3VtKys7CgkJfQoJfQoJc29ydChhcnIrMSxhcnIrMStuLGNtcCk7CglpbnQgbD0xOwoJZm9yKGludCBpPTE7aTw9bTtpKyspewoJCXdoaWxlKGk+PWFycltsXS5kICYmIGw8PW4pewoJCQlpZih0W2FycltsXS54XT09MCl7CgkJCQlzdW0rKzsKCQkJfQoJCQl0W2FycltsXS54XSsrOwoJCQlpZih0W2FycltsXS5jXT09MSl7CgkJCQlzdW0tLTsKCQkJfQoJCQl0W2FycltsXS5jXS0tOwoJCQlsKys7CgkJfQoJCWNvdXQ8PHN1bTsKCQljb3V0PDwiXG4iOwoJfQoJcmV0dXJuIDA7Cn0=