#include <bits/stdc++.h>
using namespace std;
const int maxn = 300000 + 10;
struct Edge {
  int to, next;
} edge[maxn << 1];
int head[maxn], E, du[maxn], col[maxn];
void init() {
  memset(head, -1, sizeof(head));
  E = 0;
}
void newedge(int u, int to) {
  edge[E].to = to;
  edge[E].next = head[u];
  head[u] = E++;
}
queue<int> q;
int main() {
  init();
  int n, m, u, to;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; i++) {
    scanf("%d%d", &u, &to);
    newedge(u, to);
    newedge(to, u);
    du[u]++;
    du[to]++;
  }
  for (int i = 1; i <= n; i++)
    if (du[i] >= 2) {
      q.push(i);
    }
  while (!q.empty()) {
    u = q.front();
    q.pop();
    if (du[u] <= 1) continue;
    for (int i = head[u]; i != -1; i = edge[i].next) {
      to = edge[i].to;
      if (col[to] == col[u]) {
        du[to]--;
        du[u]--;
      } else {
        du[to]++;
        q.push(to);
        du[u]++;
      }
    }
    col[u] ^= 1;
  }
  for (int i = 1; i <= n; i++) printf("%d", col[i]);
  puts("");
  return 0;
}
