#include <bits/stdc++.h>
using namespace std;
const int maxn = (int)1e5 + 10;
const int maxm = (int)4e5 + 10;
int s[maxm], e[maxm << 1], f[maxm], p[maxn];
int c, l;
vector<int> m[maxn];
void dfs(int i) {
  for (; p[i] < m[i].size();) {
    int k = m[i][p[i]];
    p[i] += 1;
    if (!f[k / 2]) {
      f[k / 2] = 1;
      dfs(e[k]);
    }
  }
  s[c++] = i;
}
void add(int i, int j) {
  e[l] = j;
  m[i].push_back(l);
  l += 1;
  e[l] = i;
  m[j].push_back(l);
  l += 1;
}
int main() {
  int n, k, i, j;
  scanf("%d%d", &n, &k);
  for (; k--; scanf("%d%d", &i, &j), i--, j--, add(i, j))
    ;
  k = -1;
  for (i = 0; i < n; i++)
    if (m[i].size() & 1) {
      if (k == -1)
        k = i;
      else {
        add(k, i), k = -1;
      }
    }
  if ((l >> 1) & 1) add(0, 0);
  dfs(0);
  printf("%d\n", c - 1);
  for (int i = 0; i < c - 1; i++) {
    if (i & 1)
      printf("%d %d\n", s[i] + 1, s[i + 1] + 1);
    else
      printf("%d %d\n", s[i + 1] + 1, s[i] + 1);
  }
  return 0;
}
