#include <iostream>
#include<bits/stdc++.h>

using namespace std;

int n,m;

int main() {
	
cin>>n>>m;
int flag=0;
vector<vector<int>>arr(m,vector<int>(2));
vector<vector<int>>adj(n+1);

for(int i=0;i<m;i++)
{
	cin>>arr[i][0]>>arr[i][1];
}

for(int i=0;i<m;i++)
{
	adj[arr[i][0]].push_back(arr[i][1]);
	adj[arr[i][1]].push_back(arr[i][0]);
}

vector<int>set(n+1,0);

for(int i=1;i<=n;i++)
{
	vector<int>temp=adj[i];
	int team1=0,team2=0;
	
	if(set[i]==0)
	{
		for(auto x: temp)
		{
			if(set[x]==1)
			{
				team1=2; team2=1; break;
			}
			
			else if(set[x]==2)
			{
				team1=1; team2=2; break;
			}
			
			else 
			{
			    team1=1; team2=2;
			}
			
		}
		
		cout<<flag<<endl;	
	}
	

	else if(set[i]==1)
	{
		team1=1;
		
		for(auto x: temp)
		{
			if(set[x]==1)
			{
				flag=1; break;
			}
			
		}
		
		team2=2;
		
		if(flag)
	    {
	        break;
	    }
	    cout<<flag<<endl;
	}
	

	
	else if(set[i]==2)
	{
		team1=2;
		
		for(auto x: temp)
		{
			if(set[x]==2)
			{
				flag=1; break;
			}
		}
		
		team2=1;
		
		if(flag)
	    {
	        break;
	    }
		cout<<flag<<endl;
	}
	
	set[i]=team1;
	for(auto x:temp)
	{
		set[x]=team2;
	}
}
	cout<<flag<<endl;
if(flag==0) for(int i=1;i<=n;i++)cout<<set[i]<<" ";
else cout<<"IMPOSSIBLE";

}