#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int M = 4e5 + 10;
int n, m, l = -1, ans[M], k;
multiset<int> g[N];
void go(int v) {
  while (g[v].size()) {
    int u = *g[v].begin();
    g[u].erase(g[u].find(v));
    g[v].erase(g[v].find(u));
    go(u);
  }
  ans[k++] = v;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0, a, b; i < m; ++i) {
    scanf("%d%d", &a, &b);
    g[a].insert(b);
    g[b].insert(a);
  }
  for (int i = 1; i <= n; ++i) {
    if (g[i].size() % 2) {
      if (l == -1) {
        l = i;
      } else {
        g[i].insert(l);
        g[l].insert(i);
        ++m;
        l = -1;
      }
    }
  }
  if (m % 2) g[1].insert(1), g[1].insert(1), ++m;
  go(1);
  printf("%d\n", m);
  for (int i = 0; i < m; ++i)
    printf("%d %d\n", ans[(i + i % 2) % m], ans[(i + !(i % 2)) % m]);
  return 0;
}
