func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, t = 1, c1, c2;   vector<vector<long long>> adj;   vector<vector<long long>> g;   vector<bool> visited;   void DFS(long long v) {     visited[v] = true;     g[t].push_back(v);     for (auto i : adj[v])       if (!visited[i]) DFS(i);   }   long long number_of_components() {     for (long long v = 1; v <= n; v++)       if (!visited[v]) {         DFS(v);         if (g[t].size() > 3) {           cout <<  -1 ;           return -1;         }         if (g[t].size() == 1) c1++;         if (g[t].size() == 2) c2++;         t++;       }   }   void solve() {     long long m, x, y, j = 0, h = 1;     cin >> n >> m;     adj.resize(n + 1);     g.resize(n + 1);     visited.assign(n + 1, false);     for (long long i = 1; i <= m; i++) {       cin >> x >> y;       adj[x].push_back(y);       adj[y].push_back(x);     }     long long z = number_of_components();     if (z == -1) return;     if (c2 > c1) {       cout <<  -1 ;       return;     }     if ((c1 - c2) % 3 != 0) {       cout << -1;       return;     }     for (long long i = 1; i <= t; i++) {       if (g[i].size() == 3) {         for (auto v : g[i]) cout << v <<    ;         cout <<   n ;       }       if (g[i].size() == 2) {         for (auto v : g[i]) cout << v <<    ;         for (j = h; j <= t; j++)           if (g[j].size() == 1) {             cout << g[j][0];             break;           }         h = j + 1;         cout <<   n ;       }     }     for (long long i = j + 1; i <= t; i++) {       if (g[i].size() == 1) cout << g[i][0] <<    ;       if ((j - i) % 3 == 0) cout <<   n ;     }   }   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     solve();     cerr <<  time taken :   << (float)clock() / CLOCKS_PER_SEC <<   secs  << endl;     return 0;   }   