#include <bits/stdc++.h>
using namespace std;
const int maxn = 105;
const long long INF = 1e18;
const long long magic = 100000;
vector<int> cycle;
vector<set<int>> g;
vector<int> used;
void euler_cycle(int v) {
  used[v] = 1;
  stack<int> s;
  s.push(v);
  while (!s.empty()) {
    int v = s.top();
    if (g[v].empty()) {
      s.pop();
      cycle.push_back(v);
    } else {
      int to = *g[v].begin();
      g[v].erase(to);
      g[to].erase(v);
      s.push(to);
    }
  }
}
void solve() {
  int n, m;
  cin >> n >> m;
  g.resize(n + 1);
  for (int i = 0; i < m; i++) {
    int u, v;
    cin >> u >> v;
    g[u].insert(v);
    g[v].insert(u);
  }
  for (int i = 0; i < n; i++) {
    if (g[i].size() % 2) {
      g[i].insert(0);
      g[0].insert(i);
    }
  }
  used.assign(n + 1, -1);
  vector<pair<int, int>> all_edges;
  for (int i = 0; i < n; i++) {
    if (used[i] == -1) {
      cycle.clear();
      euler_cycle(i);
      if (cycle.size() == 1) continue;
      cycle.push_back(cycle[0]);
      vector<pair<int, int>> edges;
      for (int i = 0; i < cycle.size() - 1; i++) {
        edges.push_back({cycle[i], cycle[i + 1]});
        if (edges[i].first > edges[i].second)
          swap(edges[i].first, edges[i].second);
      }
      for (int i = 0; i < edges.size(); i++) {
        if (edges[i].first == edges[i].second) continue;
        if (edges[i].first != 0 && ((i % 2) == 0)) {
          all_edges.push_back(edges[i]);
          continue;
        }
        if ((i % 2) == 1 && edges[i].first != 0) {
          int prev = (i + edges.size() - 1) % edges.size();
          int next = (i + 1) % edges.size();
          if (edges[prev].first == 0) {
            all_edges.push_back(edges[i]);
          } else if (edges[next].first == 0) {
            all_edges.push_back(edges[i]);
          }
        }
      }
    }
  }
  cout << all_edges.size() << endl;
  for (int i = 0; i < all_edges.size(); i++) {
    cout << all_edges[i].first << " " << all_edges[i].second << endl;
  }
}
int main() {
  cin.tie(0);
  cout.tie(0);
  ios_base::sync_with_stdio(false);
  solve();
  return 0;
}
