#include <bits/stdc++.h>
using namespace std;
const int MXN = 100000;
int n, m, a, b, deg[MXN + 1];
vector<int> v[MXN + 1], odd, res;
void dfs(int x) {
  while (v[x].size()) {
    int u = v[x][v[x].size() - 1];
    v[x].pop_back();
    if (u != x) {
      iter_swap(find(v[u].begin(), v[u].end(), x), v[u].end() - 1);
      v[u].pop_back();
    }
    dfs(u);
  }
  res.push_back(x);
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; ++i) {
    scanf("%d%d", &a, &b);
    v[a].push_back(b);
    deg[a]++;
    deg[b]++;
    if (a != b) {
      v[b].push_back(a);
    }
  }
  for (int i = 1; i <= n; ++i) {
    if (deg[i] % 2) odd.push_back(i);
  }
  for (int i = 0; i < (int)odd.size(); i += 2) {
    v[odd[i]].push_back(odd[i + 1]);
    v[odd[i + 1]].push_back(odd[i]);
    m++;
  }
  if (m % 2) {
    v[1].push_back(1);
    m++;
  }
  dfs(1);
  printf("%d\n", res.size() - 1);
  for (int i = 0; i < (int)res.size() - 1; ++i) {
    if (i % 2)
      printf("%d %d\n", res[i], res[i + 1]);
    else
      printf("%d %d\n", res[i + 1], res[i]);
  }
}
