#include <bits/stdc++.h>
using namespace std;
bool custsort(const pair<pair<int, int>, int> &a,
              const pair<pair<int, int>, int> &b) {
  return (a.second < b.second);
}
int main() {
  int n, m, m1;
  cin >> n >> m;
  vector<int> deg(n + 1, 0), lim(n + 1);
  vector<pair<pair<int, int>, int>> a(m);
  vector<bool> ans(m, true);
  m1 = m;
  for (int i = 0; i < m; i++) {
    cin >> a[i].first.first >> a[i].first.second;
    deg[a[i].first.first]++;
    deg[a[i].first.second]++;
  }
  for (int i = 1; i <= n; i++) {
    lim[i] = (deg[i] + 1) / 2;
  }
  for (int i = 0; i < m; i++) {
    a[i].second = min(deg[a[i].first.first], deg[a[i].first.second]);
  }
  sort(a.begin(), a.end(), custsort);
  for (int i = 0; i < m; i++) {
    if (deg[a[i].first.first] > lim[a[i].first.first] &&
        deg[a[i].first.second] > lim[a[i].first.second]) {
      deg[a[i].first.first]--;
      deg[a[i].first.second]--;
      ans[i] = false;
      m1--;
    }
  }
  cout << m1 << endl;
  for (int i = 0; i < m; i++) {
    if (ans[i]) {
      printf("%d %d\n", a[i].first.first, a[i].first.second);
    }
  }
  return 0;
}
