#include <bits/stdc++.h>
using namespace std;
const int maxn = 300005;
vector<int> adj[maxn];
int deg[maxn];
int c[maxn];
void dfs(int u, int p, int col) {
  c[u] = col;
  for (int v : adj[u]) {
    if (v == p || c[v] != -1) continue;
    dfs(v, p, !col);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    c[i] = -1;
  }
  for (int i = 1; i <= m; i++) {
    int u, v;
    cin >> u >> v;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  for (int i = 1; i <= n; i++) {
    if (c[i] == -1) {
      dfs(i, 0, 0);
    }
  }
  for (int veces = 0; veces < 1; veces++) {
    bool change = false;
    for (int i = 1; i <= n; i++) {
      int mismo = 0;
      int u = i;
      for (int v : adj[u]) {
        if (c[v] == c[u]) mismo++;
      }
      if (mismo > 1) {
        change = true;
        queue<int> q;
        q.push(u);
        while (!q.empty()) {
          int curr = q.front();
          q.pop();
          int igual = 0;
          for (int v : adj[curr]) {
            if (c[v] == c[curr]) igual++;
          }
          if (igual < 2) continue;
          c[curr] = !c[curr];
          for (int v : adj[curr]) {
            int mismo2 = 0;
            for (int w : adj[v]) {
              if (c[w] == c[v]) mismo2++;
            }
            if (mismo2 > 1) {
              q.push(v);
            }
          }
        }
      }
    }
    if (!change) break;
  }
  for (int i = 1; i <= n; i++) {
    assert(c[i] >= 0);
    cout << c[i];
  }
  cout << '\n';
  return 0;
}
