#include <bits/stdc++.h>
using namespace std;
struct node {
  int u, v, num;
  node() {}
  node(int U, int V, int Num) {
    u = U;
    v = V;
    num = Num;
  }
};
vector<node> G;
int n, m;
int d[1000005];
int f[1000005];
bool flag[1000005];
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int u, v;
    scanf("%d %d", &u, &v);
    G.push_back(node(u, v, i));
    d[u]++;
    d[v]++;
  }
  for (int i = 1; i <= n; i++) f[i] = (d[i] + 1) >> 1;
  random_shuffle(G.begin(), G.end());
  int k = m;
  int p = (n + m + 1) >> 1;
  for (int i = 0; i < m && k > p; i++) {
    int u = G[i].u, v = G[i].v;
    if (d[u] == f[u]) continue;
    if (d[v] == f[v]) continue;
    d[u]--;
    d[v]--;
    k--;
    flag[i] = 1;
  }
  printf("%d\n", k);
  for (int i = 0; i < m; i++)
    if (!flag[i]) printf("%d %d\n", G[i].u, G[i].v);
  return 0;
}
