#include<iostream>
#include<stack>
#include<vector>
#define endl '\n'
using namespace std;
int a[100005],b[100005],bigr=0,n,m;
vector< pair<int,int> > r;
stack<int> st[100005];
stack<int> st2[100005];
void func(int p)
{
    if(p>=m+1)
    {
        int br=0,pr=-1;
        for(int i=1;i<=n;i++)
        {
            br+=st[i].size()/2;
            st2[i]=st[i];
        }
        if(br>bigr)
        {
            bigr=br;r.clear();
            for(int i=1;i<=n;i++)
            {
                pr=-1;
               while(!st2[i].empty())
               {
                   if(pr==-1)
                  pr=st2[i].top();
                  else r.push_back({pr,st2[i].top()});
                  st2[i].pop();
               }
            }
        }
        return;
    }
    st[a[p]].push(p);
    func(p+1);
    if(!st[a[p]].empty()) st[a[p]].pop();

    st[b[p]].push(p);
    func(p+1);
    if(!st[b[p]].empty()) st[b[p]].pop();

}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin>>n>>m;

    for(int i=1;i<=m;i++)
    {
        cin>>a[i]>>b[i];
    }
    func(1);

    cout<<r.size()<<endl;

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