#include <bits/stdc++.h>
using namespace std;
int n, m;
int deg[500006];
int head[500006], to[500006 << 1], nex[500006 << 1], ecn = 1;
void ade(int u, int v) { to[++ecn] = v, nex[ecn] = head[u], head[u] = ecn; }
vector<pair<int, int> > as;
int vis[500006], cur;
void dfs(int u) {
  for (int &i = head[u]; i; i = nex[i])
    if (!vis[i >> 1]) {
      vis[i >> 1] = 1;
      int v = to[i];
      dfs(v);
      ++cur;
      if (cur & 1)
        as.emplace_back(make_pair(u, v));
      else
        as.emplace_back(make_pair(v, u));
    }
}
void solve() {
  cin >> n >> m;
  vector<int> fk;
  for (int i = (1), iend = (m); i <= iend; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    ++deg[u], ++deg[v];
    ade(u, v), ade(v, u);
  }
  for (int i = (1), iend = (n); i <= iend; ++i)
    if (deg[i] & 1) fk.push_back(i);
  if ((m + fk.size() / 2) & 1) fk.push_back(1), fk.push_back(1);
  for (int i = 0; i < fk.size(); i += 2)
    ade(fk[i], fk[i + 1]), ade(fk[i + 1], fk[i]);
  dfs(1);
  cout << as.size() << endl;
  for (auto t : as) {
    printf("%d %d\n", t.first, t.second);
  }
}
signed main() { solve(); }
