#include #include #include #include using namespace std; int main() { int n, m; cin >> n >> m; vector graph[n + 1]; for(int i =0 ; i < m; i++) { int a, b; cin >> a >> b; a--; b--; graph[a].push_back(b); graph[b].push_back(a); } vector color(n + 1, -1); for(int i= 0 ;i < n; i++) { if(color[i] != -1) continue; queue q; q.push(i); q.push(1); color[i] = 1; while(!q.empty()) { int node = q.front(); q.pop(); int c = q.front(); q.pop(); for(int i = 0; i < graph[node].size(); i++) { int sosed = graph[node][i]; if(color[sosed] != -1 and color[sosed] == color[node]) { return 0 * printf("IMPOSSIBLE\n"); } if(color[sosed] == -1) { color[sosed] = 3 - c; q.push(sosed); q.push(3 - c); } } } } for(int i =0; i < n; i++) { cout << color[i] << " "; } return 0; }