#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
// Một đồ thị là đồ thị hai phía khi và chỉ khi nó có thể được tô bằng 2 màu
const int N = 1e5 + 5;
int n, m;
vector<int> adj[N];
int c[N]; // -1: chưa được tô, 0: màu 0, 1: màu 1
void dfs(int u, bool& is_bipartite) {
for (int v : adj[u]) {
if (c[v] == -1) {
c[v] = c[u] ^ 1; // màu ngược với màu của c[u] (0 -> 1, 1 -> 0)
dfs(v, is_bipartite);
}
else {
is_bipartite &= (c[v] != c[u]);
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
memset(c, -1, sizeof c);
bool is_bipartite = true;
for (int u = 1; u <= n; u++) {
if (c[u] == -1) {
c[u] = 1;
dfs(u, is_bipartite);
}
}
if (!is_bipartite) {
cout << "IMPOSSIBLE" << '\n';
}
else {
for (int u = 1; u <= n; u++) cout << c[u] + 1 << ' ';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKLy8gTeG7mXQgxJHhu5MgdGjhu4sgbMOgIMSR4buTIHRo4buLIGhhaSBwaMOtYSBraGkgdsOgIGNo4buJIGtoaSBuw7MgY8OzIHRo4buDIMSRxrDhu6NjIHTDtCBi4bqxbmcgMiBtw6B1CmNvbnN0IGludCBOID0gMWU1ICsgNTsgCgppbnQgbiwgbTsgIAp2ZWN0b3I8aW50PiBhZGpbTl07IAppbnQgY1tOXTsgLy8gLTE6IGNoxrBhIMSRxrDhu6NjIHTDtCwgMDogbcOgdSAwLCAxOiBtw6B1IDEKCnZvaWQgZGZzKGludCB1LCBib29sJiBpc19iaXBhcnRpdGUpIHsKCWZvciAoaW50IHYgOiBhZGpbdV0pIHsKCQlpZiAoY1t2XSA9PSAtMSkgewoJCQljW3ZdID0gY1t1XSBeIDE7IC8vIG3DoHUgbmfGsOG7o2MgduG7m2kgbcOgdSBj4bunYSBjW3VdICgwIC0+IDEsIDEgLT4gMCkgCgkJCWRmcyh2LCBpc19iaXBhcnRpdGUpOyAgCgkJfQoJCWVsc2UgewoJCQlpc19iaXBhcnRpdGUgJj0gKGNbdl0gIT0gY1t1XSk7IAoJCX0KCX0KfQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gbTsgCglmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewoJCWludCB1LCB2OyAKCQljaW4gPj4gdSA+PiB2OyAKCQlhZGpbdV0ucHVzaF9iYWNrKHYpOyAKCQlhZGpbdl0ucHVzaF9iYWNrKHUpOyAKCX0JCgoJbWVtc2V0KGMsIC0xLCBzaXplb2YgYyk7ICAgCgoJYm9vbCBpc19iaXBhcnRpdGUgPSB0cnVlOyAgCgoJZm9yIChpbnQgdSA9IDE7IHUgPD0gbjsgdSsrKSB7CgkJaWYgKGNbdV0gPT0gLTEpIHsKCQkJY1t1XSA9IDE7ICAKCQkJZGZzKHUsIGlzX2JpcGFydGl0ZSk7IAoJCX0KCX0KCglpZiAoIWlzX2JpcGFydGl0ZSkgewoJCWNvdXQgPDwgIklNUE9TU0lCTEUiIDw8ICdcbic7IAoJfQoJZWxzZSB7CgkJZm9yIChpbnQgdSA9IDE7IHUgPD0gbjsgdSsrKSBjb3V0IDw8IGNbdV0gKyAxIDw8ICcgJzsgCgl9Cn0=