#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int n,m;
void prov(int i,vector<vector<int>> &adj,vector<int> &visit)
{
if(visit[i])return;
visit[i]=true;
for(auto x: adj[i])
{
prov(x,adj,visit);
}
return;
}
int main() {
cin>>n>>m;
vector<int> visit (n+1,0);
vector<vector<int>>adj(n+1);
vector<vector<int>>arr(m, vector<int>(2));
for(int i=0;i<m;i++)
{
cin>>arr[i][0]>>arr[i][1];
}
for(int i=0;i<m;i++)
{
adj[arr[i][0]].push_back(arr[i][1]);
adj[arr[i][1]].push_back(arr[i][0]);
}
int count=0;
vector<int>city;
for(int i=1;i<n;i++)
{
if(!visit[i])
{
count++;
prov(i,adj,visit);
city.push_back(i);
}
}
cout<< count-m<<endl;
for(int i=0;i<city.size()-1;i++)
{
cout<<city[i]<<city[i+1]<<endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBuLG07Cgp2b2lkIHByb3YoaW50IGksdmVjdG9yPHZlY3RvcjxpbnQ+PiAmYWRqLHZlY3RvcjxpbnQ+ICZ2aXNpdCkKewoJaWYodmlzaXRbaV0pcmV0dXJuOwoJCgl2aXNpdFtpXT10cnVlOwoJCglmb3IoYXV0byB4OiBhZGpbaV0pCgl7CgkJcHJvdih4LGFkaix2aXNpdCk7Cgl9CgkKCXJldHVybjsKfQoKaW50IG1haW4oKSB7CgkKCWNpbj4+bj4+bTsKCQoJCgl2ZWN0b3I8aW50PiB2aXNpdCAobisxLDApOwoJCgl2ZWN0b3I8dmVjdG9yPGludD4+YWRqKG4rMSk7CgkKCXZlY3Rvcjx2ZWN0b3I8aW50Pj5hcnIobSwgdmVjdG9yPGludD4oMikpOwoJCglmb3IoaW50IGk9MDtpPG07aSsrKQoJewoJCQoJCWNpbj4+YXJyW2ldWzBdPj5hcnJbaV1bMV07CgkJCgl9CgkKCWZvcihpbnQgaT0wO2k8bTtpKyspCgl7CgkJYWRqW2FycltpXVswXV0ucHVzaF9iYWNrKGFycltpXVsxXSk7CgkJYWRqW2FycltpXVsxXV0ucHVzaF9iYWNrKGFycltpXVswXSk7Cgl9CgkKCWludCBjb3VudD0wOwoJdmVjdG9yPGludD5jaXR5OwoJCglmb3IoaW50IGk9MTtpPG47aSsrKQoJewoJCWlmKCF2aXNpdFtpXSkKCQl7CgkJCWNvdW50Kys7CgkJCXByb3YoaSxhZGosdmlzaXQpOwoJCQljaXR5LnB1c2hfYmFjayhpKTsKCQl9Cgl9CgkKCWNvdXQ8PCBjb3VudC1tPDxlbmRsOwoKCWZvcihpbnQgaT0wO2k8Y2l0eS5zaXplKCktMTtpKyspCgl7CgkJY291dDw8Y2l0eVtpXTw8Y2l0eVtpKzFdPDxlbmRsOwoJfQp9