서기 4000년, 지구가 황폐해지면서 사람들은 공중에 섬을 띄우고 그 위에 도시를 세워 살아간다. 섬 하나가 버틸 수 있는 무게에 한계가 있어서 도시는 작게 만들고, 대신 도시 사이를 다리로 이어 어느 도시에서든 다른 모든 도시로 이동한다. 아래 그림은 도시 1부터 도시 6까지 여섯 개의 공중도시가 다리로 이어진 모습이다.

서로 다른 다리 두 개 이상이 같은 두 도시를 직접 잇기도 한다. 위 그림에서 도시 2와 도시 4는 서로 다른 다리 두 개로 이어져 있다.
천재지변으로 다리가 끊어지는 일이 가끔 생긴다. 위 그림에서 도시 5와 도시 6을 잇는 다리가 끊어지면 도시 6에서는 어느 도시로도 갈 수 없다. 반면 도시 1과 도시 3을 잇는 다리가 끊어져도 모든 도시 사이의 이동은 그대로 유지된다.
그래서 다리 하나가 끊어져도 모든 도시 사이의 이동이 유지되도록 다리를 더 놓으려고 한다. 위 그림에서는 다음 그림처럼 도시 3과 도시 6을 잇는 다리 하나만 더 놓으면 어떤 다리가 끊어져도 모든 도시 사이를 오갈 수 있다. 도시 3 대신 다른 도시와 도시 6을 이어도 된다.

공중도시와 지금 놓인 다리가 주어질 때, 다리 하나가 끊어져도 모든 도시 사이의 이동이 유지되도록 더 놓아야 하는 다리의 최소 개수와 그 위치를 구하는 프로그램을 작성하시오. 다리의 길이는 따지지 않는다.
첫 줄에 도시의 개수 N과 다리의 개수 M이 주어진다. 3≤N≤100,000, N−1≤M≤200,000이다. 다음 M개의 줄에는 다리로 직접 이어진 두 도시 C1과 C2가 차례대로 주어진다. 1≤C1,C2≤N이다. 주어진 다리만으로 모든 도시 사이의 이동이 가능하다.
첫 줄에 더 놓아야 하는 다리의 최소 개수 R을 출력한다. 다음 R개의 줄에는 새로 놓을 다리가 직접 잇는 두 도시 D1과 D2를 작은 번호부터 출력한다.
최소 개수를 이루는 방법이 여러 가지일 수 있으므로, 다음 규칙으로 정해지는 답 하나만 출력한다.