#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define f first
#define s second
#define mp make_pair
#define lb lower_bound
#define ub upper_bound
#define trav(a, x) for (auto& a: x)
#define ins insert
#define pq priority_queue
#define all(v) v.begin(), v.end()
#define sz(x) (int)x.size()
#define endl "\n"
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
const int dx[4]= {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1};
void setIO(string name){
ios_base::sync_with_stdio(0); cin.tie(0);
freopen((name + ".in").c_str(), "r", stdin);
freopen((name + ".out").c_str(), "w", stdout);
}
int n, m;
vector<int> adj[100005];
bool visited[100005];
int last = -1;
void dfs(int x){
last = x;
visited[x] = true;
trav(a, adj[x]){
if (!visited[a])
dfs(a);
}
}
int main() {
// setIO("name");
cin >> n >> m;
for (int i = 0; i < m; i++){
int a, b; cin >> a >> b;
adj[a].pb(b);
adj[b].pb(a);
}
vector<pii> answers;
int cnt = 0;
for (int i = 1; i <= n; i++){
if (!visited[i]){
if (i != 1){
answers.pb(mp(last, i));
cnt++;
}
dfs(i);
}
}
cout << cnt << endl;
for (int i = 0; i < sz(answers); i++)
cout << answers[i].f << " " << answers[i].s << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGYgZmlyc3QKI2RlZmluZSBzIHNlY29uZAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGxiIGxvd2VyX2JvdW5kCiNkZWZpbmUgdWIgdXBwZXJfYm91bmQKI2RlZmluZSB0cmF2KGEsIHgpIGZvciAoYXV0byYgYTogeCkKI2RlZmluZSBpbnMgaW5zZXJ0CiNkZWZpbmUgcHEgcHJpb3JpdHlfcXVldWUKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLCB2LmVuZCgpCiNkZWZpbmUgc3ooeCkgKGludCl4LnNpemUoKQojZGVmaW5lIGVuZGwgIlxuIgogCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpaTsgCiAKY29uc3QgaW50IGR4WzRdPSB7LTEsIDEsIDAsIDB9LCBkeVs0XSA9IHswLCAwLCAtMSwgMX07CiAKdm9pZCBzZXRJTyhzdHJpbmcgbmFtZSl7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOwoJZnJlb3BlbigobmFtZSArICIuaW4iKS5jX3N0cigpLCAiciIsIHN0ZGluKTsKCWZyZW9wZW4oKG5hbWUgKyAiLm91dCIpLmNfc3RyKCksICJ3Iiwgc3Rkb3V0KTsKfQogCmludCBuLCBtOwp2ZWN0b3I8aW50PiBhZGpbMTAwMDA1XTsKYm9vbCB2aXNpdGVkWzEwMDAwNV07CmludCBsYXN0ID0gLTE7CiAKdm9pZCBkZnMoaW50IHgpewogICAgbGFzdCA9IHg7CiAgICB2aXNpdGVkW3hdID0gdHJ1ZTsKICAgIHRyYXYoYSwgYWRqW3hdKXsKICAgICAgICBpZiAoIXZpc2l0ZWRbYV0pCiAgICAgICAgICAgIGRmcyhhKTsKICAgIH0KfQogCmludCBtYWluKCkgewogICAgLy8gc2V0SU8oIm5hbWUiKTsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKyl7CiAgICAgICAgaW50IGEsIGI7IGNpbiA+PiBhID4+IGI7CiAgICAgICAgYWRqW2FdLnBiKGIpOwogICAgICAgIGFkaltiXS5wYihhKTsKICAgIH0KICAgIAogICAgdmVjdG9yPHBpaT4gYW5zd2VyczsKICAgIGludCBjbnQgPSAwOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBpZiAoIXZpc2l0ZWRbaV0pewogICAgICAgICAgICBpZiAoaSAhPSAxKXsKICAgICAgICAgICAgICAgIGFuc3dlcnMucGIobXAobGFzdCwgaSkpOwogICAgICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGZzKGkpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgY291dCA8PCBjbnQgPDwgZW5kbDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3ooYW5zd2Vycyk7IGkrKykKICAgICAgICBjb3V0IDw8IGFuc3dlcnNbaV0uZiA8PCAiICIgPDwgYW5zd2Vyc1tpXS5zIDw8IGVuZGw7CiAgICAgICAgCiAgICByZXR1cm4gMDsKfQ==