#include <bits/stdc++.h>
int head[131072], last[1048576], to[1048576], id[1048576], cnt = 0;
void add(int u, int v, int idd) {
  cnt++;
  last[cnt] = head[u];
  head[u] = cnt;
  to[cnt] = v;
  id[cnt] = idd;
}
int deg[131072];
bool vis[524288];
bool tp = false;
void dfs(int u) {
  for (int& i = head[u]; i; i = last[i]) {
    int v = to[i];
    int idd = id[i];
    if (vis[idd]) {
      continue;
    }
    vis[idd] = true;
    dfs(v);
    if (tp) {
      printf("%d %d\n", u, v);
    } else {
      printf("%d %d\n", v, u);
    }
    tp = (!tp);
  }
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    deg[u] ^= 1;
    deg[v] ^= 1;
    add(u, v, i);
    add(v, u, i);
  }
  int last = 0;
  for (int i = 1; i <= n; i++) {
    if (deg[i]) {
      if (!last) {
        last = i;
      } else {
        m++;
        add(last, i, m);
        add(i, last, m);
        last = 0;
      }
    }
  }
  if (m & 1) {
    m++;
    add(1, 1, m);
    add(1, 1, m);
  }
  printf("%d\n", m);
  dfs(1);
  return 0;
}
