func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T, typename TT>   ostream& operator<<(ostream& out, pair<T, TT> t) {     return out <<  (  << t.first <<  ,  << t.second <<  ) ;   }   template <typename T>   ostream& operator<<(ostream& out, vector<T> t) {     for (int i = 0; i < ((int)(t).size()); i++) out << t[i] <<    ;     return out;   }   template <typename T>   inline bool cmin(T& a, const T& b) {     return a > b ? a = b, 1 : 0;   }   template <typename T>   inline bool cmax(T& a, const T& b) {     return a < b ? a = b, 1 : 0;   }   template <typename T>   void read(T& x) {     int f = 1;     char ch;     x = 0;     while (!isdigit(ch = getchar()))       ;     while (isdigit(ch)) x = x * 10 + ch -  0 , ch = getchar();     x *= f;   }   const int NX = 201234;   int n, m, p[NX];   map<int, int> e[NX];   int main() {     read(n);     read(m);     for (int i = 1, u, v; i <= m; i++) {       read(u);       read(v);       e[u][v] = e[v][u] = true;     }     for (int i = 1; i <= n; i++) p[i] = i;     for (int T = 200; T--;) {       random_shuffle(p + 1, p + n + 1);       int cnt = 0;       for (int i = 1; i <= n; i++) {         int l = p[i], r = p[i % n + 1];         cnt += !e[l].count(r);       }       if (cnt >= m) {         for (int i = 1; i <= n; i++) {           int l = p[i], r = p[i % n + 1];           if (!e[l].count(r)) {             printf( %d %d n , l, r);             if (!--m) return 0;           }         }       }     }     puts( -1 );     return 0;   }   