#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
ll N = 1e9+7;
ll oo =1e13;
const ll maxx = 1000000 + 3;
ll n,m,k,q,x,y,z,l,r,mid,ans;
vector<ll>vis;
vector<vector<ll>>adj;
void DFS(ll u) {
vis[u]=1;
for (ll a:adj[u]) {
if (vis[a] == 0 ) {
DFS(a);
}
}
}
void solve() {
cin >> n >> m ;
vis.assign(n+1,0);
adj.assign(n+1,{});
for (ll i =1 ;i <= m;i++) {
cin>>x>>y;
adj[y].push_back(x);
adj[x].push_back(y);
}
ll prev=-1;
vector<pair<ll,ll>>o;
for (ll i = 1;i<=n;i++) {
if (!vis[i]) {
o.push_back({i,prev});
prev=i;
DFS(i);
}
}
cout<<o.size()-1<<endl;
for (ll i =1;i<o.size();i++) {
cout<<o[i].first<<' '<<o[i].second<<endl;
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
ll t=1 ;
// cin >>t;
while (t--) {
ans=0;
solve();
}
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVuZGwgJ1xuJwpsbCBOID0gMWU5Kzc7CmxsIG9vID0xZTEzOwpjb25zdCBsbCBtYXh4ID0gMTAwMDAwMCArIDM7CmxsIG4sbSxrLHEseCx5LHosbCxyLG1pZCxhbnM7CnZlY3RvcjxsbD52aXM7CnZlY3Rvcjx2ZWN0b3I8bGw+PmFkajsKCnZvaWQgREZTKGxsIHUpIHsKICAgIHZpc1t1XT0xOwogICAgZm9yIChsbCBhOmFkalt1XSkgewogICAgICAgIGlmICh2aXNbYV0gPT0gMCApIHsKICAgICAgICAgICAgREZTKGEpOwogICAgICAgIH0KICAgIH0KfQp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG4gPj4gbSA7CiAgICB2aXMuYXNzaWduKG4rMSwwKTsKICAgIGFkai5hc3NpZ24obisxLHt9KTsKICAgIGZvciAobGwgaSA9MSA7aSA8PSBtO2krKykgewogICAgICAgIGNpbj4+eD4+eTsKICAgICAgICBhZGpbeV0ucHVzaF9iYWNrKHgpOwogICAgICAgIGFkalt4XS5wdXNoX2JhY2soeSk7CiAgICB9CiAgICBsbCBwcmV2PS0xOwogICAgdmVjdG9yPHBhaXI8bGwsbGw+Pm87CiAgICBmb3IgKGxsIGkgPSAxO2k8PW47aSsrKSB7CiAgICAgICAgaWYgKCF2aXNbaV0pIHsKICAgICAgICAgICAgby5wdXNoX2JhY2soe2kscHJldn0pOwogICAgICAgICAgICBwcmV2PWk7CiAgICAgICAgICAgIERGUyhpKTsKICAgICAgICB9CiAgICB9CiAgICBjb3V0PDxvLnNpemUoKS0xPDxlbmRsOwogICAgZm9yIChsbCBpID0xO2k8by5zaXplKCk7aSsrKSB7CiAgICAgICAgY291dDw8b1tpXS5maXJzdDw8JyAnPDxvW2ldLnNlY29uZDw8ZW5kbDsKICAgIH0KfQppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGxsIHQ9MSA7CiAgICAvLyBjaW4gPj50OwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIGFucz0wOwogICAgICAgIHNvbHZlKCk7CiAgICB9Cn0=