Xây đường

Xem dạng PDF

Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Đất nước Byteland có n thành phố và m con đường hai chiều. Mục tiêu là xây thêm các con đường sao cho từ bất kỳ thành phố nào cũng có thể đi đến bất kỳ thành phố nào khác.

Hãy tìm:

Số con đường mới ít nhất cần xây. Một phương án xây các con đường đó.

Input

Dòng đầu gồm hai số nguyên n và m: số thành phố và số con đường hiện có. Các thành phố được đánh số từ 1 đến n. m dòng tiếp theo, mỗi dòng gồm hai số a, b, cho biết có một con đường nối giữa hai thành phố đó.

Output

In ra số nguyên k: số con đường mới cần xây ít nhất. Sau đó in k dòng, mỗi dòng gồm hai số mô tả một con đường cần xây.

Có thể in ra bất kỳ đáp án hợp lệ nào.

Ràng buộc:

~1 ≤ n ≤ 100000;~

~1 ≤ m ≤ 200000;~

~1 ≤ a, b ≤ n;~

Ví dụ

Input

4 2
1 2
3 4

Output

1
2 3

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.