#include <bits/stdc++.h>
using namespace std;
int const MAX = 1e6 + 5;
int n, m, cnt, tot, all;
int outd[MAX], a[MAX], ans[MAX];
multiset<int> e[MAX];
void DFS(int x) {
  while (!e[x].empty()) {
    int i = *(e[x].begin());
    e[x].erase(e[x].begin());
    e[i].erase(e[i].find(x));
    DFS(i);
  }
  ans[++all] = x;
}
int main() {
  int x, y;
  scanf("%d %d", &n, &m);
  while (m--) {
    scanf("%d %d", &x, &y);
    e[x].insert(y);
    e[y].insert(x);
    outd[x]++;
    outd[y]++;
    cnt++;
  }
  for (int i = 1; i <= n; i++)
    if (outd[i] % 2) a[++tot] = i;
  for (int i = 1; i < tot; i += 2) {
    e[a[i]].insert(a[i + 1]);
    e[a[i + 1]].insert(a[i]);
    cnt++;
  }
  if (cnt % 2) cnt++;
  printf("%d\n", cnt);
  all = 0;
  DFS(1);
  for (int i = 1; i < all; i++) {
    if (i % 2)
      printf("%d %d\n", ans[i], ans[i + 1]);
    else
      printf("%d %d\n", ans[i + 1], ans[i]);
  }
  if (!(all % 2)) printf("1 1\n");
}
