#include <bits/stdc++.h>
using namespace std;
const int kMaxN = 3 * 100005;
bool used[kMaxN];
int N, M;
vector<int> graph[kMaxN];
bool correct(int node) {
  int conflicts = 0;
  for (size_t i = 0; i < graph[node].size(); ++i)
    if (used[node] == used[graph[node][i]]) ++conflicts;
  if (conflicts < 2) return true;
  return false;
}
void change(int node) {
  used[node] = !used[node];
  for (size_t i = 0; i < graph[node].size(); ++i)
    if (!correct(graph[node][i])) change(graph[node][i]);
}
int main() {
  assert(scanf("%d%d", &N, &M) == 2);
  int x, y;
  for (int i = 1; i <= M; ++i) {
    assert(scanf("%d%d", &x, &y) == 2);
    graph[x].push_back(y);
    graph[y].push_back(x);
  }
  for (int i = 1; i <= N; ++i)
    if (!correct(i)) change(i);
  for (int i = 1; i <= N; ++i) printf("%d", used[i]);
  return 0;
}
