#include <bits/stdc++.h>
using namespace std;
#define REP(i,a,b) for (int i = a; i < b; i++)
int main(){
int n;
int m;
cin>>n>>m;
bool impossible = false;
vector<int> adj[n];
REP(i,0,m){
int a;
int b;
cin>>a>>b;
a--;b--;
adj[a].push_back(b);
adj[b].push_back(a);
}
queue<int> q;
bool visited[n];
int distance[n];
REP(i,0,n){
if (visited[i]) continue;
else{
visited[i] = true;
distance[i] = 0;
q.push(i);
while (!q.empty()) {
int s = q.front(); q.pop();
// process node s
for (auto u : adj[s]) {
if (visited[u]&&(distance[u]==distance[s])) {impossible= true; break;break;};
if (visited[u]&&(distance[u]!=distance[s])) continue;
visited[u] = true;
distance[u] = (distance[s]+1)%2;
q.push(u);
}
}
}
REP(i,0,n){
cout<<(distance[i]+1);
}
return 0;
}