#include <stdio.h>
#include <stdlib.h>
#define MAXN 3500
int x[MAXN],y[MAXN],z[MAXN],Qy[MAXN+1],Qz[MAXN+1];
inline void swap(int b,int e,int *v){
int aux=v[b];
v[b]=v[e];
v[e]=aux;
}
void myqsort(int begin,int end,int *v){
int b=begin,e=end,pivot=v[(b+e)/2];
while(b<=e){
while(v[b]<pivot) b++;
while(v[e]>pivot) e--;
if(b<=e){
swap(b,e,x);
swap(b,e,y);
swap(b,e,z);
b++;
e--;
}
}
if(begin<e) myqsort(begin,e,v);
if(b<end) myqsort(b,end,v);
}
int main(){
FILE*fi,*fout;
int t,i,rez,pas,con,n,j;
fi=fopen("cutii.in" ,"r");
fout=fopen("cutii.out" ,"w");
fscanf(fi,"%d%d" ,&n,&t);
while(t){
for(j=0;j<n;j++)
fscanf(fi,"%d%d%d" ,&x[j],&y[j],&z[j]);
myqsort(0,n-1,x);
con=0;
for(i=0;i<n;i++){
if(con==0){
Qz[1]=z[i];
Qy[1]=y[i];
con++;
}
else
if(Qy[con]<y[i]){
con++;
Qy[con]=y[i];
Qz[con]=z[i];
}
else{
rez=0;
for(pas=1<<13;pas;pas>>=1)
if(rez+pas<=con&&Qy[rez+pas]<y[i])
rez+=pas;
rez++;
if(z[i]>Qz[con]){
Qy[rez]=y[i];
Qz[rez]=z[i];
}
else{
while(rez<=con&&Qz[rez]<z[i])
rez++;
Qy[rez]=y[i];
Qz[rez]=z[i];
if(rez==con+1)
con++;
}
}
}
fprintf(fout,"%d\n" ,con);
t--;
}
fclose(fi);
fclose(fout);
return 0;
}