#pragma warning(disable:4786) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MEM(a, b) memset(a, (b), sizeof(a)) #define CLR(a) memset(a, 0, sizeof(a)) #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define ABS(X) ( (X) > 0 ? (X) : ( -(X) ) ) #define S(X) ( (X) * (X) ) #define SZ(V) (int )V.size() #define FORN(i, n) for(i = 0; i < n; i++) #define FORAB(i, a, b) for(i = a; i <= b; i++) #define ALL(V) V.begin(), V.end() #define IN(A, B, C) ((B) <= (A) && (A) <= (C)) typedef pair PII; typedef pair PDD; typedef vector VI; typedef vector VP; #define AIN(A, B, C) assert(IN(A, B, C)) //typedef int LL; //typedef long long int LL; //typedef __int64 LL; struct Customer { int s, e, p; Customer(int a, int b, int c) { s = a, e = b, p = c; } Customer(); }; bool operator<(Customer A, Customer B) { if(A.p != B.p) return A.p < B.p; return A.e < B.e; } int main() { int T, N, K; int s, f, p, i, j, ans; vector V; scanf("%d", &T); AIN(T, 1, 30); while(T--) { scanf("%d %d", &N, &K); AIN(N, 0, 100000); AIN(K, 1, 1000000000); V.clear(); for(i = 0; i < N; i++) { scanf("%d %d %d", &s, &f, &p); AIN(s, 0, f - 1); AIN(f, s + 1, 1000000000); AIN(p, 1, K); V.push_back( Customer(s, f, p) ); } sort(ALL(V)); j = 0; ans = N > 0; for(i = 0; i < N; i++) { if(V[i].p != V[j].p) {j = i, ans++; continue;} if(V[i].s >= V[j].e) {j = i, ans++; continue;} } printf("%d\n", ans); } return 0; }