#include <bits/stdc++.h>
using namespace std;
struct Reader {
  istream& in;
  template <typename T>
  operator T() const {
    T t;
    in >> t;
    return t;
  }
};
const int N = 100000, M = 200000;
int d[N + 1], h[N + 1], l[M * 5], t[M * 5];
bool b[M * 5], f;
inline void add(int i, int u, int v) {
  l[i] = h[u];
  t[i] = v;
  h[u] = i;
}
void dfs(int u) {
  for (int& i = h[u]; i; i = l[i]) {
    if (b[i]) continue;
    b[i] = b[i ^ 1] = true;
    int v = t[i];
    dfs(v);
    if (f = !f)
      cout << u << ' ' << v << '\n';
    else
      cout << v << ' ' << u << '\n';
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  Reader r{cin};
  int n = r, m = r;
  for (int i = 1; i <= m; ++i)
    int a = r, b = r,
        _ = (add(i << 1 | 0, a, b), add(i << 1 | 1, b, a), ++d[a], ++d[b]);
  for (int p = 0, i = 1; i <= n; ++i)
    (d[i] & 1) &&
        (p = p ? (++m, add(m << 1 | 0, p, i), add(m << 1 | 1, i, p), 0) : i);
  if (m & 1) ++m, add(m << 1 | 0, 1, 1), add(m << 1 | 1, 1, 1);
  cout << m << '\n';
  dfs(1);
  return 0;
}
