$N$명의 해적이 보물을 상자에 넣었다. 해적들은 (그럴 만한 이유로!) 서로를 믿지 못해 자물쇠 장인을 찾아간다. 장인은 상자에 $L$개의 자물쇠를 채우는데, 상자를 열려면 모든 자물쇠를 풀어야 한다. 그런 다음 각 해적이 열쇠를 일부는 갖되 전부는 갖지 못하도록 열쇠를 나눠 준다. 하나의 자물쇠에 대응하는 열쇠는 여러 개일 수 있지만, 하나의 열쇠는 오직 하나의 자물쇠만 열 수 있다.
해적의 수와 각 해적이 가진 열쇠 집합이 주어질 때, 함께 상자를 열 수 있으면서 불필요한 구성원이 하나도 없는 모든 해적 무리를 찾아라. 즉, 무리에서 어떤 해적이라도 빠지면 더 이상 상자를 열 수 없어야 한다.
해적의 수가 너무 많아 가능한 모든 조합을 단순히 살펴볼 수는 없으므로, 더 영리한 알고리즘을 골라야 한다.
첫째 줄에 해적의 수 $N$과 자물쇠의 수 $L$이 주어진다. 이어지는 $N$개의 줄 중 $i$번째 줄에는 $i$번 해적이 열쇠를 가진 자물쇠들의 번호가 공백으로 구분되어 주어진다. 해적의 번호는 $1$부터 $N$까지이고, 자물쇠의 번호는 $1$부터 $L$까지이다.
상자를 열 수 있으면서 불필요한 구성원이 없는 모든 해적 무리를 출력한다. 각 무리는 한 줄에 출력하며, 무리에 속한 해적의 번호를 오름차순으로 나열한다. 무리는 구성원 수가 적은 것부터 많은 것 순으로 나열하고, 구성원 수가 같은 무리끼리는 사전순으로 나열한다 (사전순 비교는 첫 번째 해적 번호를 먼저 비교하고, 같으면 두 번째, 그다음 세 번째 순으로 비교한다).