def set_uniform_partitions(n: int, k: int, yield_func): """ n 個の要素を、要素数 k のグループに等分割する全てのパターンを生成する """ assert n > 0 and k > 0 and n % k == 0 def rec(p: int, g: list[int], freq: list[int]): if p == n: yield_func(g) return for i in range(len(freq)): if freq[i] < k: # i 番目のグループに所属する g[p] = i freq[i] += 1 rec(p+1, g, freq) freq[i] -= 1 if freq[i] == 0: # 新たなグループの作成 break g = [0] * n freq = [0] * (n // k) # グループに所属する要素数 rec(0, g, freq) def func(g: list[int]): global ans pass N = int(input()) G = [] for _ in range(N): G.append(list(map(int, input().split()))) ans = 0 set_uniform_partitions(N, 2, func) print(ans)