#include <bits/stdc++.h>
using namespace std;
void Solve() {
  long long n, m;
  cin >> n >> m;
  vector<pair<long long, long long> > a(m);
  vector<long long> cntv(n);
  for (signed i = 0; i < (m); i++) {
    cin >> a[i].first >> a[i].second;
    cntv[--a[i].first]++;
    cntv[--a[i].second]++;
  }
  vector<bool> del(m);
  auto check = [&](vector<pair<long long, long long> >& edges) {
    vector<bool> del(m);
    auto ost = cntv;
    for (signed i = 0; i < (m); i++) {
      if (del[i]) continue;
      long long v = edges[i].first;
      long long u = edges[i].second;
      if ((cntv[v] + 1) / 2 < ost[v] && (cntv[u] + 1) / 2 < ost[u]) {
        ost[v]--;
        ost[u]--;
        del[i] = 1;
      }
    }
    vector<pair<long long, long long> > res;
    for (signed i = 0; i < (m); i++)
      if (!del[i]) res.push_back(edges[i]);
    return res;
  };
  for (;;) {
    auto b = a;
    random_shuffle((b).begin(), (b).end());
    auto res = check(b);
    if (res.size() <= (m + n + 1) / 2) {
      cout << res.size() << '\n';
      for (auto& p : res) cout << p.first + 1 << ' ' << p.second + 1 << '\n';
      return;
    }
  }
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  Solve();
  return 0;
}
