#include <bits/stdc++.h>   using namespace std;   template <typename T>   inline bool smin(T &a, const T &b) {     return b < a ? a = b, 1 : 0;   }   template <typename T>   inline bool smax(T &a, const T &b) {     return a < b ? a = b, 1 : 0;   }   const long long N = 3e5 + 10;   long long n, bad[N], m;   vector<long long> adj[N];   bool pos[N];   int32_t main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     cin >> n >> m;     while (m--) {       long long u, v;       cin >> u >> v;       adj[v].push_back(u);       adj[u].push_back(v);     }     set<pair<long long, long long> > s;     for (long long i = 1; i <= n; i++)       bad[i] = (long long)adj[i].size(), s.insert({bad[i], i});     while (1) {       pair<long long, long long> pi = *s.rbegin();       s.erase(pi);       long long v = pi.second;       if (bad[v] < 2) break;       bad[v] = (long long)adj[v].size() - bad[v];       for (long long u : adj[v]) {         s.erase({bad[u], u});         if (pos[u] == pos[v]) {           bad[u]--;         } else {           bad[u]++;         }         s.insert({bad[u], u});       }       pos[v] ^= 1;       s.insert({bad[v], v});     }     for (long long i = 1; i <= n; i++) cout << pos[i];   }   