int64_t countPairs(HashSet &hs, int mask) { hs.reset(); int64_t ans = 0; for (int i = 0; i < N; i++) { int m = mask; pair<int, int> key = make_pair(0, 0); while (m) { int x = __builtin_ctz(m); hashf(key, W[i][x]); m -= (1<<x); } if (hs.contains(key)) ans += hs[key]++; else hs.insert(key); } return ans; }