픽업 스틱

시간 제한1초메모리 제한128 MB

문제

픽업 스틱(pick-up sticks)은 색색의 막대들을 탁자 위에 뒤엉킨 더미로 쏟아 놓고 하는 놀이입니다. 참가자들은 번갈아 가며 다른 막대를 건드리지 않고 한 번에 막대 하나씩을 집어 올립니다. 어떤 막대는 그 위에 다른 막대가 올려져 있으면 집어 올릴 수 없으므로, 참가자들은 다른 막대 밑에 깔린 막대를 억지로 빼내야 하는 일이 결코 생기지 않는 순서로 막대를 집으려고 합니다. 어떤 막대가 어떤 막대 위에 놓여 있는지가 주어질 때, 그러한 순서를 구하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스의 첫째 줄에는 두 정수 $n$과 $m$이 주어지며, 둘 다 $1$ 이상 $1{,}000{,}000$ 이하입니다. $n$은 막대의 개수($1$번부터 $n$번까지 번호가 매겨짐)이고, $m$은 뒤따르는 줄의 개수입니다. 그 $m$개의 줄에는 각각 두 정수 $a$와 $b$가 주어지며, 이는 어떤 지점에서 막대 $a$가 막대 $b$ 위에 놓여 있음을 뜻합니다. 입력의 맨 마지막 줄은 0 0이며, 이는 테스트 케이스가 아니라 종료 표시이므로 하나의 테스트 케이스로 처리해서는 안 됩니다.

출력

각 테스트 케이스에 대해, 어떤 막대도 그 위에 다른 막대가 놓인 채로 집히지 않도록 막대를 집어 올릴 수 있는 순서를 한 줄에 한 막대 번호씩 총 $n$줄로 출력합니다. 그러한 순서가 여러 개일 수 있으므로, 답을 유일하게 정하기 위해 사전순으로 가장 작은 순서를 출력하세요. 즉, 두 순서를 첫 번째 막대부터 마지막 막대까지의 번호 나열로 비교하여, 처음으로 서로 달라지는 위치에서 더 작은 번호를 갖는 순서를 택합니다. 올바른 순서가 존재하지 않으면 대신 IMPOSSIBLE이라는 단어만을 한 줄에 출력하세요.