func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, x, y;   vector<vector<int> > adjList(100009, vector<int>());   bool vis[100009];   vector<int> ans;   bool check_valid_edges(vector<vector<int> > &a, int n) {     for (size_t i = 1; i <= n; i++)       if (a[i].size() != 4) return false;     return true;   }   int comp(int node1, int node2) {     int c = 0;     for (int i = 0; i < adjList[node1].size(); i++) {       for (int j = 0; j < adjList[node2].size(); j++) {         if (adjList[node1][i] == adjList[node2][j]) c++;       }     }     return c;   }   void dfs(int node) {     vis[node] = true;     bool f = true;     for (int i = 0; i < adjList[node].size() && f; i++) {       if (comp(node, adjList[node][i]) == 2 && !vis[adjList[node][i]])         ans.push_back(adjList[node][i]), dfs(adjList[node][i]), f = false;     }   }   int main() {     cin >> n;     for (int i = 1; i <= (2 * n); i++) {       cin >> x >> y;       adjList[x].push_back(y);       adjList[y].push_back(x);     }     if (!check_valid_edges(adjList, n)) return cout << -1 << endl, 0;     if (n == 5)       return cout <<  1 2 3 4 5 n  << endl, 0;     else if (n == 6) {       int s_node = 21;       for (int i = 0; i < adjList[1].size(); i++) s_node -= adjList[1][i];       s_node--;       cout <<  1   << adjList[1][0] <<     << adjList[1][1] <<     << s_node            <<     << adjList[1][2] <<     << adjList[1][3] << endl;       ;     } else {       dfs(1);       ans.push_back(1);       if (ans.size() == n)         for (int i = 0; i < ans.size(); i++) cout << ans[i] <<    ;       else         cout << -1 << endl;     }     return 0;   }   