#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200005;
const int MAXINT = 1073741823;
multiset<int> neighbors[MAXN];
stack<int> path;
vector<int> circuit;
int loops[MAXN];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, m, u, v, select = -1, current, following;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> u >> v;
    u--;
    v--;
    if (u == v)
      loops[u]++;
    else {
      neighbors[u].insert(v);
      neighbors[v].insert(u);
    }
  }
  for (int i = 0; i < n; i++) {
    if (neighbors[i].size() % 2 == 0) continue;
    if (select == -1) {
      select = i;
      continue;
    }
    neighbors[select].insert(i);
    neighbors[i].insert(select);
    select = -1;
    m++;
  }
  if (m % 2 == 1) {
    loops[0]++;
    m++;
  }
  current = 0;
  path.push(0);
  while (!path.empty()) {
    if (loops[current] > 0) {
      path.push(current);
      loops[current]--;
    } else if (!neighbors[current].empty()) {
      path.push(current);
      following = *neighbors[current].begin();
      neighbors[current].erase(neighbors[current].begin());
      neighbors[following].erase(neighbors[following].find(current));
      current = following;
    } else {
      circuit.push_back(current);
      current = path.top();
      path.pop();
    }
  }
  cout << m << '\n';
  for (int i = 1; i < circuit.size(); i++)
    if (i % 2 == 0)
      cout << circuit[i - 1] + 1 << ' ' << circuit[i] + 1 << '\n';
    else
      cout << circuit[i] + 1 << ' ' << circuit[i - 1] + 1 << '\n';
  return 0;
}
