바이트랜드 보안국(BSA)에는 두 종류의 직원, 즉 지휘관과 사무원이 근무한다. 모든 직원에게는 번호가 매겨져 있다. 각 사무원의 서류철에는 본인의 서명과 함께, 그 사무원의 충성심을 보증하는 직원(사무원이든 지휘관이든)들의 서명이 보관되어 있다. 모든 사무원은 적어도 한 명의 보증인을 두어야 하며, 시간이 지나면서 보증인 목록은 늘어날 수 있다. 지휘관은 아무도 보증해 주지 않은 직원이다.
최근 BSA는 적국 마이크로소프트랜드에서 온 첩자가 지휘관 대열에 잠입한 사실을 알아냈다. 이후로 더 많은 첩자가 사무원 자리에 채용되었는데, 이들은 오직 첩자인 직원(첩자 지휘관 또는 이미 채용된 다른 첩자)에게만 보증을 받았다. 다시 말해, 첩자 사무원의 보증인은 전부 첩자이다.
어떤 사무원이, 첩자가 아닌 지휘관으로부터 직접 또는 간접적으로 보증을 받지 못했다면 그 사무원의 신뢰성은 의심받는다. 형식적으로 말하면, p1 은 첩자가 아닌 지휘관이고, pk 는 해당 사무원이며, 모든 i=1,…,k−1 에 대해 pi 가 pi+1 을 보증하는 직원의 수열 p1,p2,…,pk 가 존재하지 않을 때 그 사무원은 의심받는다.
어떤 한 지휘관을 첩자라고 가정했을 때, 그 가정 때문에 이전에는 의심받지 않던 사무원의 신뢰성이 새로 의심받게 된다면, 그 사무원은 간첩 혐의자가 된다. BSA 지휘부는 이러한 사무원 전체의 목록을 원한다.
직원 수와 보증 정보를 읽어 간첩 혐의를 받는 사무원을 찾아 표준 출력으로 내보내는 프로그램을 작성하라.
첫 번째 줄에는 BSA 직원 수를 나타내는 정수 n (1≤n≤500) 이 주어진다. 직원의 번호는 1 부터 n 까지이다.
이어지는 n 개의 줄은 각 직원이 받은 보증을 설명한다. i+1 번째 줄(단, i=1,…,n)은 직원 i 에 대한 설명이다. 이 줄은 직원 i 가 받은 보증의 수를 뜻하는 정수 mi (mi≥0) 로 시작하고, 이어서 직원 i 를 보증하는 직원들의 번호 mi 개가 온다. 한 줄의 모든 수는 하나의 공백으로 구분되므로, 그 줄에는 정수가 모두 mi+1 개 들어 있다.
아무에게도 보증받지 않은 직원(즉 mi=0)은 지휘관이고, 그 밖의 모든 직원은 사무원이다.
간첩 혐의를 받는 사무원이 한 명 이상이면, 그들의 번호를 오름차순으로 한 줄에 하나씩 출력한다.
혐의를 받는 사무원이 없으면, BRAK 이라는 단어 하나만 한 줄에 출력한다.
지휘관이 Alice 와 Gregor 이고, 사무원들의 보증 관계가 다음과 같다고 하자.
Bob, Charlie, David 는 오직 Alice 로부터만 도달할 수 있으므로, Alice 를 첩자로 가정하면 이들이 의심받게 된다. Henry 와 Isabelle 은 오직 Gregor 로부터만 도달할 수 있으므로, Gregor 를 첩자로 가정하면 이들이 의심받게 된다. Eve 와 Frank 는 두 지휘관 모두로부터 도달할 수 있으므로, 어느 한 명을 첩자로 가정해도 의심받지 않는다. 따라서 간첩 혐의를 받는 사무원은 Bob, Charlie, David, Henry, Isabelle 이다.