#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int M = 2e5 + 10;
int n, m;
struct bian {
  int from, to, tag;
} eg[M << 2];
int front[N], num;
void add(int x, int y) {
  eg[++num].to = y;
  eg[num].from = front[x];
  front[x] = num;
}
int deg[N], sf;
void dfs(int o) {
  for (int &i = front[o]; i; i = eg[i].from) {
    int to = eg[i].to;
    if (eg[i].tag) continue;
    eg[i].tag = eg[((i - 1) ^ 1) + 1].tag = 1;
    dfs(to);
    sf ^= 1;
    if (sf)
      printf("%d %d\n", o, to);
    else
      printf("%d %d\n", to, o);
  }
}
int main() {
  scanf("%d%d", &n, &m);
  int be = 0;
  for (int i = 1; i <= m; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    ++deg[x];
    ++deg[y];
    add(x, y);
    add(y, x);
  }
  for (int i = 1; i <= n; ++i) {
    if (deg[i] & 1) {
      if (be)
        ++m, add(i, be), add(be, i), be = 0;
      else
        be = i;
    }
  }
  if (m & 1) add(1, 1), add(1, 1), ++m;
  printf("%d\n", m);
  dfs(1);
}
