func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   inline void read(T &x) {     x = 0;     char c = getchar();     while (!isdigit(c)) c = getchar();     while (isdigit(c)) {       x = x * 10 + c -  0 ;       c = getchar();     }   }   int fr[100005], to[100005 << 1], ne[100005 << 1], x[100005];   int a[100005], b[100005], l, r;   int n, m;   int flag;   int c, d, e;   inline void dfs(int w) {     for (int u = fr[w]; u; u = ne[u])       if (!x[to[u]]) {         x[to[u]] = 3 - x[w];         dfs(to[u]);       } else if (x[w] == x[to[u]])         flag = 1;   }   int main() {     read(n);     read(m);     for (int i = 1; i <= m; ++i) {       read(c);       read(d);       to[++e] = d;       ne[e] = fr[c];       fr[c] = e;       to[++e] = c;       ne[e] = fr[d];       fr[d] = e;     }     flag = 0;     for (int i = 1; i <= n; ++i)       if (!x[i]) {         x[i] = 1;         dfs(i);       }     if (flag)       printf( -1 n );     else {       for (int i = 1; i <= n; ++i)         if (x[i] == 1)           a[++l] = i;         else           b[++r] = i;       printf( %d n , l);       for (int i = 1; i <= l; ++i) printf( %d%c , a[i], i < l ?     :   n );       printf( %d n , r);       for (int i = 1; i <= r; ++i) printf( %d%c , b[i], i < r ?     :   n );     }     return 0;   }   