func_code_string: #include <bits/stdc++.h>   using namespace std;   const int ROOT = 0, MAXN = 100000;   const char WHITE = 0, GRAY = 1, BLACK = 2;   vector<int> graph[MAXN];   int n, m, a, b, i;   char k[MAXN] = {WHITE};   inline int dfs(const int& v = ROOT) {     k[v] = GRAY;     int i, t, p = -1;     for (i = 0; i < (int)(graph[v].size()); i++)       if (k[graph[v][i]] == WHITE) {         t = dfs(graph[v][i]);         if (t == -1) {           if (p == -1)             p = graph[v][i];           else {             printf( %d %d %d n , p + 1, v + 1, graph[v][i] + 1);             p = -1;           }         } else           printf( %d %d %d n , v + 1, graph[v][i] + 1, t + 1);       } else if (k[graph[v][i]] == BLACK) {         if (p == -1)           p = graph[v][i];         else {           printf( %d %d %d n , p + 1, v + 1, graph[v][i] + 1);           p = -1;         }       }     k[v] = BLACK;     return p;   }   int main() {     scanf( %d%d , &n, &m);     if (m & 1) {       printf( No solution n );       return 0;     }     for (i = 0; i < m; i++) {       scanf( %d%d , &a, &b);       a--;       b--;       graph[a].push_back(b);       graph[b].push_back(a);     }     assert(dfs() == -1);     return 0;   }   