#include<bits/stdc++.h>
//#include<boost/multiprecision/cpp_int.hpp>
#define fast ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
using namespace std;
//using boost::multiprecision::cpp_int;
typedef long long LL;
typedef long double LD;
const int inf=0x3f3f3f3f;
const int infi=1e9+7;
int t,n,m,c,d;
int main()
{
fast;
cin>>t;
if(t>=1&&t<=3000)
{
while(t--)
{
vector<int> *ptr;
ptr=new vector<int> [100001]();
cin>>n>>m;
/*if(n==2)
{
cout<<1<<endl;
cout<<1<<" "<<1<<endl;
}*/
if(!(m&1))
{
cout<<1<<endl;
for(int i=0;i<n;++i)
cout<<1<<" ";
cout<<endl;
for(int i=0;i<m;++i)
{
int a,b;
cin>>a>>b;
}
}
else
{
for(int i=0;i<m;++i)
{
int a,b;
cin>>a>>b;
ptr[a].push_back(b);
ptr[b].push_back(a);
c=a;
d=b;
}
for(int i=1;i<=n;++i)
{
if((ptr[i].size()&1))
{
cout<<2<<endl;
for(int j=1;j<=n;++j)
{
if(j!=i)
cout<<1<<" ";
else
cout<<2<<" ";
}
cout<<endl;
break;
}
if(i==n-1)
{
cout<<3<<endl;
for(int k=1;k<=n;++k)
{
if(k==c)
cout<<2<<" ";
else if(k==d)
cout<<3<<" ";
else
cout<<1<<" ";
}
cout<<endl;
}
}
}
}
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KLy8jaW5jbHVkZTxib29zdC9tdWx0aXByZWNpc2lvbi9jcHBfaW50LmhwcD4KI2RlZmluZSBmYXN0IGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKE5VTEwpO2NvdXQudGllKE5VTEwpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vdXNpbmcgYm9vc3Q6Om11bHRpcHJlY2lzaW9uOjpjcHBfaW50Owp0eXBlZGVmIGxvbmcgbG9uZyBMTDsKdHlwZWRlZiBsb25nIGRvdWJsZSBMRDsKY29uc3QgaW50IGluZj0weDNmM2YzZjNmOwpjb25zdCBpbnQgaW5maT0xZTkrNzsKaW50IHQsbixtLGMsZDsKaW50IG1haW4oKQp7CiAgICBmYXN0OwogICAgY2luPj50OwogICAgaWYodD49MSYmdDw9MzAwMCkKICAgIHsKICAgIHdoaWxlKHQtLSkKICAgIHsKICAgICB2ZWN0b3I8aW50PiAqcHRyOwogICAgIHB0cj1uZXcgdmVjdG9yPGludD4gWzEwMDAwMV0oKTsKICAgICBjaW4+Pm4+Pm07CiAgICAgLyppZihuPT0yKQogICAgIHsKICAgICAgICAgY291dDw8MTw8ZW5kbDsKICAgICAgICAgY291dDw8MTw8IiAiPDwxPDxlbmRsOwogICAgIH0qLwogICAgIGlmKCEobSYxKSkKICAgICB7CiAgICAgY291dDw8MTw8ZW5kbDsKICAgICBmb3IoaW50IGk9MDtpPG47KytpKQogICAgIGNvdXQ8PDE8PCIgIjsKICAgICBjb3V0PDxlbmRsOwogICAgIGZvcihpbnQgaT0wO2k8bTsrK2kpCiAgICAgewogICAgICAgICBpbnQgYSxiOwogICAgICAgICBjaW4+PmE+PmI7CiAgICAgfQogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgIGZvcihpbnQgaT0wO2k8bTsrK2kpCiAgICAgewogICAgICAgIGludCBhLGI7CiAgICAgICAgY2luPj5hPj5iOwogICAgICAgIHB0clthXS5wdXNoX2JhY2soYik7CiAgICAgICAgcHRyW2JdLnB1c2hfYmFjayhhKTsKICAgICAgICBjPWE7CiAgICAgICAgZD1iOwogICAgIH0KICAgICBmb3IoaW50IGk9MTtpPD1uOysraSkKICAgICB7CiAgICAgICAgIGlmKChwdHJbaV0uc2l6ZSgpJjEpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb3V0PDwyPDxlbmRsOwogICAgICAgICAgICAgZm9yKGludCBqPTE7ajw9bjsrK2opCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYoaiE9aSkKICAgICAgICAgICAgICAgICBjb3V0PDwxPDwiICI7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvdXQ8PDI8PCIgIjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvdXQ8PGVuZGw7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZihpPT1uLTEpCiAgICAgICAgIHsKICAgICAgICAgICAgY291dDw8Mzw8ZW5kbDsKICAgICAgICAgICAgZm9yKGludCBrPTE7azw9bjsrK2spCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZihrPT1jKQogICAgICAgICAgICAgICAgIGNvdXQ8PDI8PCIgIjsKICAgICAgICAgICAgICAgICBlbHNlIGlmKGs9PWQpCiAgICAgICAgICAgICAgICAgY291dDw8Mzw8IiAiOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb3V0PDwxPDwiICI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dDw8ZW5kbDsKICAgICAgICAgfQogICAgIH0KICAgICB9CiAgICAgCiAgICAgfQogICAgfQp9