#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 5;
int head[maxn];
struct eed {
  int next, to;
} edge[maxn << 1];
int ecnt;
inline void addedge(int u, int v) {
  edge[ecnt].next = head[u];
  edge[ecnt].to = v;
  head[u] = ecnt++;
}
queue<int> Q;
bool col[maxn];
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  memset(head, -1, sizeof(head));
  while (m--) {
    int u, v;
    scanf("%d%d", &u, &v);
    addedge(u, v);
    addedge(v, u);
  }
  memset(col, 0, sizeof(col));
  for (int i = 1; i <= n; ++i) {
    int cnt = 0;
    for (int e = head[i]; ~e; e = edge[e].next)
      if (col[edge[e].to] == col[i]) cnt++;
    if (cnt >= 2) Q.push(i);
  }
  while (!Q.empty()) {
    int u = Q.front();
    Q.pop();
    int cnt = 0;
    for (int e = head[u]; ~e; e = edge[e].next)
      if (col[edge[e].to] == col[u]) cnt++;
    if (cnt >= 2) {
      col[u] ^= 1;
      for (int e = head[u]; ~e; e = edge[e].next) Q.push(edge[e].to);
    }
  }
  for (int i = 1; i <= n; ++i) putchar(col[i] ? '1' : '0');
  return 0;
}
