#include<cstdio>
#include<algorithm>
#define x first
#define y second
using namespace std;
pair<int,pair<int,int> > p[3501];
int b[3501],c[3501],d[3501],e[3501],x[3501],y[3501],i,n,t,m,k,u,r,l,q,g,h,v;
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",&p[i].x,&p[i].y.x,&p[i].y.y);
sort(p,p+n);
for(i=1;i<=n;i++)
x[i]=p[i].y.x,y[i]=p[i].y.y;
u=v=b[1]=c[1]=d[1]=e[1]=1,c[0]=e[0]=0;
for(i=2;i<=n;i++) {
l=0,r=u,m=(l+r)/2,k=-1;
while(l<=r&&k==-1)
if(x[c[m]]<x[i]&&x[c[m+1]]>x[i])
k=m;
else
if(x[c[m+1]]<x[i])
l=m+1,m=(l+r)/2;
else
r=m-1,m=(l+r)/2;
k=(k==-1?u:k),b[i]=k+1,c[k+1]=i,u=(u<k+1?(k+1):u);
l=0,r=v,m=(l+r)/2,k=-1;
while(l<=r&&k==-1)
if(y[e[m]]<y[i]&&y[e[m+1]]>y[i])
k=m;
else
if(y[e[m+1]]<y[i])
l=m+1,m=(l+r)/2;
else
r=m-1,m=(l+r)/2;
k=(k==-1?v:k),d[i]=k+1,e[k+1]=i,v=(v<k+1?(k+1):v);
}
for(q=m=1,l=n,i=n-1;i;i--)
if(b[i]<b[l]&&d[i]<d[l])
m++,l=i;
else
if(b[i]>b[l]&&d[i]>d[l])
q=q<m?m:q,m=1,l=i;
printf("%d\n",q<m?m:q);
}
}