#include<bits/stdc++.h>
using namespace std;

const int maxn=1000003;
int n, m;
vector<int> ez[maxn];
int comp=1, ans=0;
int gol;
bool vis[maxn];
int ezici[maxn][2];

void dfs(int x){
    vis[x]=true;
    for(int i=0; i<ez[ezici[x][0]].size(); i++){
        if(!vis[ez[ezici[x][0]][i]]){
            gol++;
            dfs(ez[ezici[x][0]][i]);
        }
    }
    for(int i=0; i<ez[ezici[x][1]].size(); i++){
        if(!vis[ez[ezici[x][1]][i]]){
            gol++;
            dfs(ez[ezici[x][1]][i]);
        }
    }
}

int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);

cin>>n>>m;
for(int i=1; i<=m; i++){
    int a, b;
    cin>>a>>b;
    ezici[i][0]=a;
    ezici[i][1]=b;
    ez[a].push_back(i);
    ez[b].push_back(i);
}

gol=1;
dfs(1);

/*
for(int i=1; i<m; i++){
    cerr<<i<<": "<<endl;
    for(int j=0; j<nbrs[i].size(); j++){
        cerr<<nbrs[i][j]<<" ";
    }
    cerr<<endl;
}
*/
ans+=gol/2;
for(int i=1; i<m; i++){
    if(!vis[i]){
        gol=1;
        dfs(i);
        //cerr<<gol<<endl;
        ans+=gol/2;
    }
}
cout<<ans;
for(int i=1; i<=ans; i++){
    cout<<i*2-1<<" "<<i*2<<endl;
}
return 0;
}
