#include<stdio.h>
#include<stdlib.h>
int i,n,t,l[2],m,k,e[3501],a[3501],b[3501],c[3501],d[3501],r[2],w,j,v;
typedef struct N {
int x[2];
struct N *l,*r;
}K;
K *u;
void I(K *&u,int d[],int k) {
if(!u) {
u=(K*)malloc(sizeof(K));
u->x[0]=d[0],u->x[1]=d[1],u->l=u->r=NULL;
}
else if(d[k]<u->x[k])
I(u->l,d,1-k);
else
I(u->r,d,1-k);
}
void P(K *&u,int l[],int r[],int k,int *w) {
if(!u)
return;
if(l[0]<=u->x[0]&&r[0]>=u->x[0]&&l[1]<=u->x[1]&&r[1]>=u->x[1])
(*w)++;
if(l[k]<=u->x[k])
P(u->l,l,r,1-k,w);
if(r[k]>=u->x[k])
P(u->r,l,r,1-k,w);
}
int main() {
freopen("cutii.in","r",stdin),freopen("cutii.out","w",stdout),scanf("%d%d",&n,&t);
for(;t;t--) {
for(i=1;i<=n;i++)
scanf("%d%d%d",&e[i],&a[i],&b[i]),c[e[i]]=a[i],d[e[i]]=b[i];
k=0,u=NULL,l[0]=c[1],l[1]=d[1],I(u,l,k),k=1-k,m=w=1;
for(j=2;j<=n;j++)
r[0]=c[j],r[1]=d[j],I(u,r,k),k=1-k,v=0,P(u,l,r,k,&v),k=1-k,w=v>w?(w+1):w,m=m<w?w:m;
printf("%d\n",m);
}
}