func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( O3 )   #pragma GCC optimize( unroll-loops )   #pragma GCC target( sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native )   using namespace std;   const long long mod = 1000000007;   const int mxN = 100010;   vector<int> g[mxN];   int main(int argc, char** argv) {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());     int N, M, u, v;     cin >> N >> M;     for (int i = 0; i < M; i++) {       cin >> u >> v;       u--, v--;       g[u].push_back(v);       g[v].push_back(u);     }     vector<int> a;     for (int i = 0; i < N; i++) a.push_back(i);     for (int iti = 0; iti < 1000; iti++) {       shuffle(a.begin(), a.end(), rng);       int prev = -10;       vector<pair<int, int> > res;       for (int i = 0; i + 1 < N && (int)res.size() < M; i++) {         u = a[i];         v = a[i + 1];         bool f = find(g[u].begin(), g[u].end(), v) == g[u].end();         if (!f && prev == -10) break;         if (f) {           res.push_back({u, v});           if (prev == -10) prev = i;         } else {           if (prev != i - 1) {             bool f2 = find(g[u].begin(), g[u].end(), a[prev]) == g[u].end();             if (f2) {               res.push_back({u, a[prev]});             }           }           prev = -10;         }       }       if (prev != -10 && prev != N - 2 && (int)res.size() + 1 == M) {         u = a[N - 1];         bool f2 = find(g[u].begin(), g[u].end(), a[prev]) == g[u].end();         if (f2) {           res.push_back({u, a[prev]});         }         prev = -10;       }       if ((int)res.size() == M) {         for (auto p : res) cout << p.first + 1 <<     << p.second + 1 <<   n ;         return 0;       }     }     cout <<  -1 n ;     return 0;   }   