#include <bits/stdc++.h>
int a[100001], b[600006], c[600006], e[100001], m, n, t, x, y, z;
bool d[600006];
inline void add(int u, int v) {
  b[++t] = a[u], e[c[a[u] = t] = v]++, b[++t] = a[v], e[c[a[v] = t] = u]++;
}
void dfs(int u) {
  for (int v; a[u];)
    !d[a[u] >> 1] ? d[a[u] >> 1] = true, v = c[a[u]], a[u] = b[a[u]], dfs(v),
                              0 : a[u] = b[a[u]];
  (z ^= 1)& 1 ? x = u : y = u, y ? printf("%d %d\n", x, y) : 0;
}
int i, u, v;
int main() {
  for (scanf("%d%d", &n, &m), i = t = 1; i <= m; i++)
    scanf("%d%d", &u, &v), add(u, v);
  for (i = 1, u = v = 0; i <= n;
       u ? add(u, v), u = v = 0 : 0, e[i] = e[i] >> 1 & 1, i++)
    if (e[i] & 1) u = v, e[v = i]++;
  return 0 * (t >> 1 & 1 ? add(1, 1), 0 : 0, printf("%d\n", t >> 1), dfs(1), 0);
}
