func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long INF = 1e18;   const int inf = 1e9;   const long double eps = 1e-7;   const long double pi = acos(-1);   const int dx[8] = {0, 2, 1, 0, -2, -1, 1, 2};   const int dy[8] = {2, 0, 1, -2, 0, -1, 2, 1};   const int N = 23;   const int MAXN = 1e5;   const int mod = 1e9 + 7;   int g[N];   int dp[(1 << N)], p[(1 << N)];   int main() {     int n, m;     cin >> n >> m;     if (m == n * (n - 1) / 2) {       cout << 0;       return 0;     }     for (int i = 1; i <= m; i++) {       int u, v;       cin >> u >> v;       u--, v--;       g[u] |= (1 << v);       g[v] |= (1 << u);     }     for (int i = 0; i < n; i++) {       g[i] |= (1 << i);     }     for (int i = 0; i < (1 << n); i++) {       dp[i] = inf;     }     dp[0] = 0;     for (int i = 0; i < n; i++) {       dp[g[i]] = 1;       p[g[i]] = 0;     }     for (int mask = 1; mask < (1 << n); mask++) {       if (dp[mask] == inf) continue;       for (int i = 0; i < n; i++) {         if ((mask >> i) & 1) {           int nmask = (mask | g[i]);           if (dp[nmask] > dp[mask] + 1) {             dp[nmask] = dp[mask] + 1;             p[nmask] = mask;           }         }       }     }     int mask = (1 << n) - 1;     vector<int> ans;     cout << dp[mask] <<   n ;     while (mask) {       int pmask = p[mask];       if (p[mask] == 0) {         for (int i = 0; i < n; i++) {           if (mask == g[i]) {             ans.push_back(i);             break;           }         }         break;       }       for (int i = 0; i < n; i++) {         if ((pmask >> i) & 1) {           int nmask = (pmask | g[i]);           if (nmask == mask) {             ans.push_back(i);             break;           }         }       }       mask = pmask;     }     reverse(ans.begin(), ans.end());     for (int i = 0; i < (int)ans.size(); i++) {       cout << ans[i] + 1 <<    ;     }   }   