#include #include #include using namespace std; struct code{ int a[4]; bool operator<(const code &B)const{ for(int i = 0; i < 3; i++) if(a[i] != B.a[i]) return a[i] < B.a[i]; return a[3] < B.a[3]; } }; code getAddr(code A, code B) { code res; for(int i = 0; i < 4; i++) res.a[i] = A.a[i] & B.a[i]; return res; } int main() { int t, n, m, CASE = 0; code tmp, ip[1010], subnet[100]; set addr; scanf("%d", &t); while(t--) { scanf("%d %d", &n, &m); for(int i = 0; i < n; i++) scanf("%d.%d.%d.%d", &ip[i].a[0], &ip[i].a[1], &ip[i].a[2], &ip[i].a[3]); for(int i = 0; i < m; i++) scanf("%d.%d.%d.%d", &subnet[i].a[0], &subnet[i].a[1], &subnet[i].a[2], &subnet[i].a[3]); printf("Case #%d:\n", ++CASE); for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { tmp = getAddr(subnet[i], ip[j]); addr.insert(tmp); } cout<