#include int rec (int size, int assigned[size], int input[size][3], int position) { if (position == size) { return 1; } int n = 0; if (input[position][0] == 0 || input[position][1] == 0 || input[position][2] == 0 && assigned[input[position][0]] == 0) { assigned[input[position][0]]++; n += rec (size, assigned, input, position + 1); assigned[input[position][0]]--; } else if (input[position][0] == 1 || input[position][1] == 1 || input[position][2] == 1 && assigned[input[position][1]] == 0) { assigned[input[position][1]]++; n += rec (size, assigned, input, position + 1); assigned[input[position][1]]--; } else if (input[position][0] == 2 || input[position][1] == 2 || input[position][2] == 2 && assigned[input[position][2]] == 0) { assigned[input[position][2]]++; n += rec (size, assigned, input, position + 1); assigned[input[position][2]]--; } return n; } int main (int argc, char *argv[]) { int size; scanf("%d", &size); int input[size][3]; int assigned[size]; for (int i = 0; i < size; i++) { assigned[i] = 0; scanf("%d %d %d", &input[i][0], &input[i][1], &input[i][2]); } int max = rec(size, assigned, input, 0); printf("%d\n", max); }