#include #include void visit(size_t i, const std::vector>& a, std::vector& c) { if (c[i]) return; c[i] = true; for (auto j : a[i]) visit(j, a, c); } int main() { size_t n, m; std::cin >> n >> m; std::vector> a(n); for (size_t i = 0; i < m; i++) { size_t x, y; std::cin >> x >> y; a[x-1].push_back(y-1); a[y-1].push_back(x-1); } std::vector c(n, false); std::vector s; for (size_t i = 0; i < n; i++) { if (c[i]) continue; if (i != 0) s.push_back(i); visit(i, a, c); } std::cout << s.size() << "\n"; for (auto x : s) std::cout << "1 " << x+1 << "\n"; }