#include<iostream>
#include<algorithm>
#include<vector>
#define endl '\n'
using namespace std;
int t[100005];
vector< pair<int,int> > v[100005];
vector<int> c[100005],r;
bool isp[100005];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int n,m,a,b;
    cin>>n>>m;

    for(int i=1;i<=m;i++)
    {
        cin>>a>>b;
        c[a].push_back(i);
        c[b].push_back(i);
    }
    int prp=0;
    for(int i=1;i<=n;i++)
    {
        prp=0;
        r.clear();
       for(int j=0;j<c[i].size();j++)
       {
           if(!isp[c[i][j]])
           {
               isp[c[i][j]]=1;r.push_back(c[i][j]);
               if(prp==0) {prp=c[i][j];continue;}
               else v[i].push_back({prp,c[i][j]});
               prp=0;
           }
           else{v[i].clear();
           for(int j=0;j<r.size();j++) isp[r[j]]=0;break;}
       }
    }
cout<<m/2<<endl;

for(int j=1;j<=n;j++)
    for(int i=0;i<v[j].size();i++)
    {
        cout<<v[j][i].first<<" "<<v[j][i].second<<endl;
    }
}
