#include <bits/stdc++.h>   using namespace std;   const int maxn = 1e6 + 5;   struct aa {     int x, y;   } s[maxn];   int vis1[maxn], vis2[maxn], vis3[maxn];   bool judge(int i) {     if (vis2[s[i].x] + 1 > (vis1[s[i].x]) / 2 ||         vis2[s[i].y] + 1 > (vis1[s[i].y]) / 2)       return false;     else       return true;   }   bool cmp(aa a, aa b) {     if (a.x == b.x)       return a.x < b.x;     else       return a.y > b.y;   }   int main() {     int n, m, cnt, res;     scanf( %d%d , &n, &m);     cnt = m;     res = (n + m + 1) / 2;     for (int i = 0; i < m; i++) {       scanf( %d%d , &s[i].x, &s[i].y);       if (s[i].x < s[i].y) swap(s[i].x, s[i].y);       vis1[s[i].x]++;       vis1[s[i].y]++;     }     random_shuffle(s, s + m);     for (int i = 0; i < m && cnt > res; i++) {       if (judge(i)) {         vis2[s[i].x]++;         vis2[s[i].y]++;         vis3[i] = 1;         cnt--;       }     }     printf( %d n , cnt);     for (int i = 0; i < m; i++) {       if (!vis3[i]) {         printf( %d %d n , s[i].x, s[i].y);       }     }     return 0;   }   