#include<stdio.h>
#include<stdlib.h>
int i,n,t,l[2],m,k,e[2],a[3501],b[3501],c[3501],d[3501],r[2],w[3501][3501],j,f;
typedef struct N {
int x[2];
struct N *l,*r;
}K;
K *u[3501],*v;
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];
for(m=k=0,i=1;i<n;i++) {
u[i]=NULL,l[0]=c[i],l[1]=d[i],I(u[i],l,k),k=1-k,r[0]=c[i+1],r[1]=d[i+1],I(u[i],r,k),w[i][i+1]=c[i]<c[i+1]&&d[i]<d[i+1]?2:1,m=m<w[i][i+1]?w[i][i+1]:m;
for(j=i+2;j<=n;j++)
r[0]=c[j],r[1]=d[j],I(u[i],r,k),k=1-k,w[i][j]=0,P(u[i],l,r,f,&w[i][j]),w[i][j]=(w[i][j]>w[i][j-1]?(w[i][j-1]+1):w[i][j-1]),m=m<w[i][j]?w[i][j]:m;
}
printf("%d\n",m);
}
}