#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
int n, m, x = -1, p[maxn];
vector<pair<int, int> > veci[maxn];
vector<int> vec;
bool mark[300000 + 10];
void dfs(int u) {
  for (; p[u] < veci[u].size(); p[u]++) {
    auto x = veci[u][p[u]];
    if (mark[x.second] == 0) {
      mark[x.second] = 1;
      dfs(x.first);
    }
  }
  vec.push_back(u);
}
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    veci[a].push_back({b, i});
    veci[b].push_back({a, i});
  }
  for (int i = 1; i <= n; i++)
    if (veci[i].size() % 2) {
      if (x == -1)
        x = i;
      else {
        veci[x].push_back({i, m});
        veci[i].push_back({x, m});
        m++;
        x = -1;
      }
    }
  if (m % 2 == 1) {
    veci[1].push_back({1, m});
    m++;
  }
  cout << m << endl;
  dfs(1);
  for (int i = 1; i <= m; i++)
    if (i % 2 == 1)
      cout << vec[i] << " " << vec[i - 1] << endl;
    else
      cout << vec[i - 1] << " " << vec[i] << endl;
}
