func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m;   int tot = 1;   int b[200005], e[200005], h[200005], p[200005], u[200005];   vector<int> ans[200005];   void add(int x, int y) {     b[++tot] = y;     e[tot] = h[x];     h[x] = tot;   }   void dfs(int k, int fa_edge) {     p[k] = 1;     for (int go = h[k]; go; go = e[go])       if (b[go] != b[fa_edge]) {         if (p[b[go]] == 0) dfs(b[go], go ^ 1);         if (u[go] == 0) ans[k].push_back(b[go]), u[go] = u[go ^ 1] = 1;       }     int sum = ans[k].size();     if (sum & 1)       sum++, ans[k].push_back(b[fa_edge]), u[fa_edge] = u[fa_edge ^ 1] = 1;     for (int i = 0; i < sum; i += 2)       printf( %d %d %d n , ans[k][i] + 1, k + 1, ans[k][i + 1] + 1);   }   int main() {     scanf( %d%d , &n, &m);     if (m % 2) {       printf( No solution );       return 0;     }     int x, y;     for (int i = 0; i < m; i++) {       scanf( %d%d , &x, &y);       add(--x, --y);       add(y, x);     }     dfs(0, -1);     return 0;   }   