#include<stdio.h>
#define N 3501
int i,n,t,x[N],y[N],z[N],a[N],b[N],c[N],l[N],max,k;
void merge(int x[N],int y[N],int z[N],int p,int q)
{int m=(p+q)/2,i,j,k;
if(p==q)
return;
merge(x,y,z,p,m);
merge(x,y,z,m+1,q);
for(i=p,j=m+1,k=p;i<=m||j<=q;)
if(j>q||(i<=m&&x[i]<x[j]))
{a[k]=x[i];
b[k]=y[i];
c[k++]=z[i++];}
else
{a[k]=x[j];
b[k]=y[j];
c[k++]=z[j++];}
for(i=p;i<=q;i++)
{x[i]=a[i];
y[i]=b[i];
z[i]=c[i];}}
int main()
{freopen("cutii.in","r",stdin);
freopen("cutii.out","w",stdout);
scanf("%d%d",&n,&t);
while(t--)
{for(i=1;i<=n;i++)
scanf("%d%d%d",&x[i],&y[i],&z[i]);
merge(x,y,z,1,n);
l[n]=1;
for(k=n-1;k;k--)
{max=0;
for(i=k+1;i<=n;i++)
if(l[i]>max&&y[i]>y[k]&&z[i]>z[k])
max=l[i];
l[k]=1+max;}
printf("%d\n",l[1]);}
return 0;}