#include <bits/stdc++.h>
using namespace std;
int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
int ddx[8] = {1, 1, 0, -1, -1, -1, 0, 1}, ddy[8] = {0, 1, 1, 1, 0, -1, -1, -1};
void mad(long long &a, long long b) {
  a = (a + b) % 1000000007;
  if (a < 0) a += 1000000007;
}
long long gcd(long long a, long long b) {
  if (a > b) swap(a, b);
  if (!a) return b;
  return gcd(b % a, a);
}
int mk[1000005], vis[1000005], vis1[2 * 1000005], vis2[2 * 1000005];
vector<int> tour;
vector<pair<int, int> > ed[1000005], res;
void euler(int u) {
  while (!ed[u].empty()) {
    int v = ed[u].back().first;
    int id = ed[u].back().second;
    ed[u].pop_back();
    if (vis1[id]) continue;
    vis1[id] = 1;
    euler(v);
  }
  tour.push_back(u);
}
void dfs(int u) {
  if (vis[u]) return;
  vis[u] = 1;
  for (pair<int, int> v : ed[u]) dfs(v.first);
}
void solve() {
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int u, v;
    cin >> u >> v;
    ed[u].push_back(pair<int, int>(v, i));
    ed[v].push_back(pair<int, int>(u, i));
  }
  for (int i = 1; i <= n; i++) {
    if (ed[i].size() & 1) {
      ed[0].push_back(pair<int, int>(i, m + i));
      ed[i].push_back(pair<int, int>(0, m + i));
    }
  }
  dfs(0);
  for (int i = 1; i <= n; i++) {
    if (!vis[i] && ed[i].size()) {
      ed[i].push_back(pair<int, int>(0, m + i));
      ed[0].push_back(pair<int, int>(i, m + i));
      ed[ed[i][0].first].push_back(pair<int, int>(0, m + ed[i][0].first));
      ed[0].push_back(pair<int, int>(ed[i][0].first, m + ed[i][0].first));
      dfs(i);
    }
  }
  euler(0);
  int k = tour.size();
  for (int i = 2; i < k; i += 2) {
    if (tour[i] && tour[i - 1]) {
      if (!tour[i - 2])
        vis2[i - 1] = 1;
      else if (!tour[(i + 1) % k])
        vis2[(i + 1) % k] = 1;
      else
        vis2[i] = 1;
    }
    if (!tour[i]) vis2[i] = 1;
    if (!tour[i - 1]) vis2[i - 1] = 1;
  }
  for (int i = 1; i < k; i++)
    if (!vis2[i] && tour[i] && tour[i - 1])
      res.push_back(pair<int, int>(tour[i], tour[i - 1]));
  cout << res.size() << "\n";
  for (pair<int, int> p : res) cout << p.first << " " << p.second << "\n";
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t;
  t = 1;
  while (t--) {
    solve();
  }
}
