#pragma GCC optimize ("O3")
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;

    pair<int,int>uch[5001];
    vector<int>ans[1001],koi;
    int br[1001];

int main(){

    long long n,m;
    cin>>n>>m;


    if(m<0 && n<0){
        int a,b;
        for(int i=0;i<m;i++){
            cin>>a>>b;
            uch[i]=make_pair(a,b);
        }
    }else{

        int a,b;
        for(int i=0;i<m;i++){
            cin>>a>>b;
            br[a]++;
            br[b]++;
            if(br[a]>1)koi.push_back(a);
            if(br[b]>1)koi.push_back(b);
            uch[i]=make_pair(a,b);
        }
        int otg=0;
        for(int i=0;i<m;i++){
            bool yes=false;
            for(int j=0;j<koi.size() && yes==false;j++){
                if(uch[i].first==koi[j]){
                    ans[koi[j]].push_back(i);
                    if(ans[koi[j]].size()==1)otg++;
                    yes=true;
                }else{
                    if(uch[i].second==koi[j]){
                        ans[koi[j]].push_back(i);
                        if(ans[koi[j]].size()==1)otg++;
                        yes=true;
                    }
                }
            }
        }
        cout<<otg<<endl;
        for(int i=1;i<=n;i++){
            if(ans[i].size()>0){
                cout<<ans[i][0]+1<<" "<<ans[i][1]+1<<endl;
            }
        }

    }


    return 0;
}
