통역사들의 만찬

모든 통역사를 언어를 공유하는 두 사람씩 짝지어야 하며, 사전순으로 가장 앞선 짝을 출력하거나 불가능하면 'impossible'을 출력한다.

보통7그래프그리디정렬아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

해마다 열리는 국제 음성 통신 학회가 올해도 열린다. 참가자가 세계 곳곳에서 오고 쓰는 말도 서로 달라서, 주최 측은 통역사를 고용했다.

학회가 끝나면 주최 측은 통역사의 노고에 감사하는 뜻으로 근처 식당에서 만찬을 열려고 한다. 그런데 이 식당에는 두 사람이 앉는 작은 탁자밖에 없어서 통역사를 두 명씩 짝지어야 한다. 주최 측은 통역사가 즐거운 저녁을 보내기를 바라므로, 한 탁자에 앉는 두 통역사가 함께 구사하는 언어가 있기를 원한다. 모든 통역사를 둘씩 짝짓되 같은 탁자에 앉은 두 사람에게 공통으로 구사하는 언어가 있도록 하는 방법을 찾는 프로그램을 작성하시오.

입력

첫째 줄에 학회에서 쓰이는 언어의 수 NN과 고용한 통역사의 수 MM이 주어진다. (2N1002 \le N \le 100, 1M2001 \le M \le 200)

다음 MM개의 줄에는 통역사 한 명의 정보가 한 줄에 하나씩 주어진다. 각 줄에는 그 통역사가 구사하는 서로 다른 두 언어의 번호가 주어진다. 언어의 번호는 00부터 N1N-1까지의 정수다.

통역사의 번호는 00부터 M1M-1까지이고, 입력에 주어지는 순서가 곧 번호 순서다. 즉 가장 먼저 주어지는 통역사의 번호가 00이다.

두 통역사가 똑같은 두 언어를 구사하는 경우는 없다. 또 학회에서 쓰이는 언어 중 어느 둘을 골라도 통역사를 여러 명 거쳐서라도 서로 번역할 수 있도록 통역사가 뽑혀 있다.

출력

모든 통역사를 짝지을 수 있으면 M/2M/2개의 줄에 짝지은 두 통역사의 번호를 출력한다. 각 줄에는 두 번호를 작은 것부터 출력하고, 줄은 첫 번째 번호가 증가하는 순서로 늘어놓는다. 짝짓는 방법이 여러 가지면 출력하는 수를 나온 순서대로 늘어놓은 수열이 사전순으로 가장 앞서는 것을 출력한다.

모든 통역사를 짝지을 수 없으면 첫째 줄에 impossible을 출력한다.