#include <bits/stdc++.h>
using namespace std;
const double EPS = 1E-12;
const long long mod = 1000000007;
using namespace std;
int n, m, a, b;
vector<int> g[100005];
map<pair<int, int>, int> e;
int deg[100005];
vector<int> odd;
int ce;
vector<int> tour;
vector<pair<int, int> > ans;
inline void go(int idx) {
  while (g[idx].size()) {
    int i = g[idx].size() - 1;
    int to = g[idx][i];
    if (e[make_pair(idx, to)] > 0) {
      e[make_pair(idx, to)]--;
      e[make_pair(to, idx)]--;
      g[idx].pop_back();
      go(to);
    } else {
      g[idx].pop_back();
    }
  }
  tour.push_back(idx + 1);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> a >> b;
    g[a - 1].push_back(b - 1);
    g[b - 1].push_back(a - 1);
    deg[a - 1]++;
    deg[b - 1]++;
    e[make_pair(a - 1, b - 1)]++;
    e[make_pair(b - 1, a - 1)]++;
    ce++;
  }
  for (int i = 0; i < n; i++) {
    if (deg[i] % 2) {
      odd.push_back(i);
    }
  }
  for (int i = 0; i < odd.size() / 2; i++) {
    g[odd[i * 2]].push_back(odd[i * 2 + 1]);
    g[odd[i * 2 + 1]].push_back(odd[i * 2]);
    e[make_pair(odd[i * 2], odd[i * 2 + 1])]++;
    e[make_pair(odd[i * 2 + 1], odd[i * 2])]++;
    ce++;
  }
  if (ce % 2) {
    g[0].push_back(0);
    e[make_pair(0, 0)] += 2;
    ce++;
  }
  cout << ce << endl;
  go(0);
  for (int i = 0; i < (int)tour.size() - 1; i++) {
    if (i & 1)
      cout << tour[i] << ' ' << tour[i + 1] << '\n';
    else
      cout << tour[i + 1] << ' ' << tour[i] << '\n';
  }
  return 0;
}
