#include <bits/stdc++.h>   using namespace std;   const int inf = 0x3f3f3f3f;   const int MOD = 1e9 + 7;   const int maxn = 3e5 + 10;   const int maxv = 1e3 + 10;   const double eps = 1e-9;   std::vector<int> G[maxn];   int ans[maxn];   void inv(int i) { ans[i] ^= 1; }   bool bad(int u) {     int cnt = 0;     for (int i = 0; i < G[u].size(); i++) {       cnt += ans[u] == ans[G[u][i]];     }     return cnt >= 2;   }   int main() {     int n, m;     scanf( %d%d , &n, &m);     for (int i = 1; i <= m; i++) {       int u, v;       scanf( %d%d , &u, &v);       if (u > v) swap(u, v);       G[v].push_back(u);       G[u].push_back(v);     }     stack<int> s;     for (int i = 1; i <= n; i++) {       if (bad(i)) s.push(i);     }     while (s.size()) {       int u = s.top();       s.pop();       if (bad(u)) inv(u);       for (int i = 0; i < G[u].size(); i++) {         int v = G[u][i];         if (bad(G[u][i])) s.push(v);       }     }     for (int i = 1; i <= n; i++) {       printf( %d , ans[i]);     }     puts(  );     return 0;   }   