# Include <stdio. h> # include <vector> # include <string. h> using namespace STD; struct node {int x, y, z;} W [510]; vector <int> H [510]; int match [510]; int vis [510]; int DFS (int I) {for (Int J = 0; j <H [I]. size (); j ++) {If (! Vis [H [I] [J]) // We mistakenly wrote vis [J] {vis [H [I] [J] = 1; if (Match [H [I] [J] =-1 | DFS (Match [H [I] [J]) {match [H [I] [J] = I; return 1 ;}}return 0 ;}int main () {int I, j, N, RET; while (scanf ("% d", & N), n) {for (I = 0; I <510; I ++) H [I]. clear (); // note for (I = 0; I <n; I ++) scanf ("% d", & W [I]. x, & W [I]. y, & W [I]. z); for (I = 0; I <n; I ++) for (j = 0; j <n; j ++) if (W [I]. x <W [J]. X & W [I]. Y <W [J]. Y & W [I]. z <W [J]. z) H [I]. push_back (j); memset (match,-1, sizeof (MATCH); ret = 0; for (I = 0; I <n; I ++) {memset (VIS, 0, sizeof (VIS); If (DFS (I) RET ++;} printf ("% d \ n", N-RET );} return 0 ;}