func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T, class L>   inline bool smax(T &x, L y) {     return x < y ? (x = y, 1) : 0;   }   template <class T, class L>   inline bool smin(T &x, L y) {     return y < x ? (x = y, 1) : 0;   }   const int maxn = 2e2 + 17, maxm = maxn * maxn;   int from[maxm], to[maxm], n, m;   bool bl[maxm], mark[maxn];   vector<int> g[maxn], vec;   void see(int v) {     if (mark[v]) return;     mark[v] = 1;     vec.push_back(v);     for (auto i : g[v]) see(from[i] ^ to[i] ^ v);   }   void dfs(int v) {     for (int i = g[v].size() - 1; i >= 0; i = (int)g[v].size() - 1) {       int e = g[v][i], u = from[e] ^ to[e] ^ v;       if (v != from[e]) swap(from[e], to[e]);       g[v].pop_back();       if (bl[e]) continue;       bl[e] = 1;       dfs(u);     }   }   void solve() {     cin >> n >> m;     int cm = m, ans = 0;     for (int i = 0; i < m; i++) {       cin >> from[i] >> to[i], from[i]--, to[i]--;       g[from[i]].push_back(i), g[to[i]].push_back(i);     }     for (int i = 0; i < n; i++) ans += g[i].size() % 2 == 0;     for (int i = 0; i < n; i++)       if (!mark[i]) {         vec.clear();         see(i);         int last = -1;         for (auto v : vec)           if (g[v].size() & 1)             if (last != -1)               last = v;             else {               from[m] = v, to[m] = last;               g[v].push_back(m), g[last].push_back(m);               m++, last = -1;             }         dfs(i);       }     cout << ans <<   n ;     for (int i = 0; i < cm; i++) cout << from[i] + 1 <<     << to[i] + 1 <<   n ;   }   int main() {     ios::sync_with_stdio(0), cin.tie(0);     int t;     cin >> t;     while (t--) {       memset(mark, 0, sizeof mark);       memset(bl, 0, sizeof bl);       solve();     }     return 0;   }   