#include using namespace std; const int N=5e5+5; int n,m,c1,c2,c3,ans=0x3f3f3f3f,x[N],a[N],b[N]; vectorbul[N]; struct BIT { int c[N]; void update(int u,int w){u++;for(int i=u;i>n>>m; for(int i=1;i<=n;i++) { cin>>x[i]>>a[i]>>b[i]; if(x[i]==3){c3++;i--;n--;} else if(x[i]==2){c2++;tr2.update(b[i],1);bul[a[i]].push_back(i);} else if(x[i]==1){c1++;tr1.update(b[i],1);bul[a[i]].push_back(i);} else if(x[i]==0)bul[a[i]].push_back(i); } for(int i=100001,r,c;~i;i--) { for(int p:bul[i]) { if(x[p]==2){c2--;tr2.update(b[p],-1);c3++;} if(x[p]==1){c1--;tr1.update(b[p],-1);c2++;tr2.update(b[p],1);} if(x[p]==0){c1++;tr1.update(b[p],1);} } r=max(0,m-c2-c3); if(r<=c1) { c=262143; for(int j=17;~j;j--)if(c1-tr1.query(c-(1<