#include <bits/stdc++.h>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
const int nmax = 3500;
int n, t, dp[nmax];
struct cutie{
int x, y, z;
bool operator < (cutie &c) const{
if (x == c.x){
if (y == c.y)
return z > c.z;
return y > c.y;
}
return x > c.x;
}
}v[nmax];
int main(){
fin >> n >> t;
while (t--){
for (int i = 1; i <= n; ++i){
fin >> v[i].x >> v[i].y >> v[i].z;
}
sort(v + 1, v + n + 1);
int maxim = 1;
dp[1] = 1;
for (int i = 2; i <= n; ++i){
int maxx = 0;
for (int j = i - 1; j >= 1; --j){
if (v[j].x > v[i].x && v[j].y > v[i].y && v[j].z > v[i].z){
maxx = max(maxx, dp[j]);
}
}
dp[i] = 1 + maxx;
maxim = max(maxim, dp[i]);
}
fout << maxim << "\n";
}
return 0;
}