회사

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

플럼소프트(Plumsoft) 회사에는 직원들 사이에 위계가 있어, 어떤 직원은 다른 직원의 상사이다. 직원 P1=A, P2, , Pk=BP_1 = A,\ P_2,\ \dots,\ P_k = B 로 이루어진 사슬이 존재하여 P1P_1P2P_2 의 상사, P2P_2P3P_3 의 상사, \dots, Pk1P_{k-1}PkP_k 의 상사이면, 사람 AA 는 사람 BB관리한다고 한다. 플럼소프트는 매우 건전하게 운영되는 회사이므로, 서로가 서로를 관리하는 두 직원은 존재하지 않는다고 가정할 수 있다(위계에 순환이 없다).

경영진은 회의 비용을 줄이고자, 기존의 직접적인 "AABB 의 상사" 관계 중 일부만 남기려 한다. 단, 모든 "AABB 를 관리한다" 관계는 그대로 유지되어야 한다. 누가 누구를 관리하는지 전혀 바뀌지 않도록 하면서, 남기는 직접적인 "상사" 관계의 수를 최소로 하도록 도와라.

입력

첫째 줄에 두 정수 NNMM 이 공백으로 구분되어 주어진다 (1N10001 \le N \le 1000, 1M100001 \le M \le 10000). NN 은 직원의 수, MM 은 회사의 직접적인 "상사" 관계의 수이다. 직원은 11 번부터 NN 번까지 번호가 매겨져 있다. 이어지는 MM 개의 줄 각각에는 두 번호 AABB 가 공백으로 구분되어 주어지며, 이는 AABB 의 상사임을 뜻한다.

출력

첫째 줄에, 모든 "관리한다" 관계가 유지되도록 남겨야 하는 직접적인 "상사" 관계의 최소 개수 MminM_{min} 을 출력한다. 그다음 MminM_{min} 개의 줄에, 남긴 관계들을 한 줄에 하나씩 두 번호 AABB(여전히 AABB 의 상사임)를 공백으로 구분하여 출력한다. 관계는 오름차순으로, 먼저 AA 를 기준으로, AA 가 같으면 BB 를 기준으로 정렬하여 출력한다.