#include<bits/stdc++.h>
using namespace std;
#define ll long long
vector<ll> adj[100001], topso;
vector<pair<ll, ll>> extra;
bool ghumakya[100001];
ll parent[100001];
void init(ll n)
{
for(ll i=0; i<n; i++)
{
adj[i].clear();
ghumakya[i]=false;
parent[i]=i;
}
extra.clear();
}
void dfs(ll v)
{
ghumakya[v]=true;
for(ll u:adj[v])
if(!ghumakya[u])
dfs(u);
topso.push_back(v);
}
void sortkardebhai(ll n)
{
for(ll i=0; i<100001; i++)
ghumakya[i]=false;
topso.clear();
for(ll i=0; i<n; i++)
if(!ghumakya[i])
dfs(i);
reverse(topso.begin(), topso.end());
}
ll find_set(ll x)
{
if(parent[x]==x)
return x;
return parent[x]=find_set(parent[x]);
}
void union_set(ll a, ll b)
{
ll x=find_set(a), y=find_set(b);
if(x!=y)
{
adj[a].push_back(b);
x=y;
}
else
extra.push_back(make_pair(a, b));
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
ll t;
cin>>t;
while(t--)
{
ll n, m;
cin>>n>>m;
ll pehlekaun[n], andar[n];
bool flag=true;;
unordered_set<ll> baaplog[n];
init(n);
for(ll i=0; i<n; i++)
{
andar[i]=0;
baaplog[i].clear();
}
pair<ll, ll> edges[m];
for(ll i=0; i<m; i++)
{
cin>>edges[i].first>>edges[i].second;
edges[i].first--;
edges[i].second--;
union_set(edges[i].first, edges[i].second);
}
sortkardebhai(n);
// cout<<endl;
for(ll i=0; i<n; i++)
pehlekaun[topso[i]]=i;
for(auto it=extra.begin(); it!=extra.end(); it++)
{
ll pehla=it->first, dusra=it->second;
if(pehlekaun[pehla]>pehlekaun[dusra])
adj[dusra].push_back(pehla);
else
adj[pehla].push_back(pehla);
}
for(ll i=0; i<n; i++)
for(ll j=0; j<adj[i].size(); j++)
{
baaplog[adj[i][j]].insert(i);
andar[adj[i][j]]++;
}
stack<ll> st;
for(auto x:topso)
st.push(x);
for(ll i=0; i<n; i++)
ghumakya[i]=false;
while(!st.empty())
{
ll u=st.top(), v;
st.pop();
ghumakya[u]=true;
if(!(andar[u]&1))
continue;
if(baaplog[u].size()==0)
{
flag=false;
break;
}
auto it=baaplog[u].begin();
for( ; it!=baaplog[u].end(); it++)
if(!ghumakya[*it])
{
v=*it;
andar[u]--;
andar[v]++;
baaplog[u].erase(v);
baaplog[v].insert(u);
break;
}
if(it==baaplog[u].end())
{
flag=false;
break;
}
}
unordered_set<ll> final[n];
for(ll i=0; i<n; i++)
for(auto it=baaplog[i].begin(); it!=baaplog[i].end(); it++)
final[*it].insert(i);
if(flag)
{
for(ll i=0; i<m; i++)
{
ll u=edges[i].first, v=edges[i].second;
if(final[u].find(v)==final[u].end())
cout<<"1 ";
else
cout<<"0 ";
}
}
else
cout<<"-1";
cout<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKCnZlY3RvcjxsbD4gYWRqWzEwMDAwMV0sIHRvcHNvOwp2ZWN0b3I8cGFpcjxsbCwgbGw+PiBleHRyYTsKYm9vbCBnaHVtYWt5YVsxMDAwMDFdOwpsbCBwYXJlbnRbMTAwMDAxXTsKCnZvaWQgaW5pdChsbCBuKQp7CiAgICBmb3IobGwgaT0wOyBpPG47IGkrKykKICAgIHsKICAgICAgICBhZGpbaV0uY2xlYXIoKTsKICAgICAgICBnaHVtYWt5YVtpXT1mYWxzZTsKICAgICAgICBwYXJlbnRbaV09aTsKICAgIH0KICAgIGV4dHJhLmNsZWFyKCk7Cn0KCnZvaWQgZGZzKGxsIHYpCnsKICAgIGdodW1ha3lhW3ZdPXRydWU7CiAgICBmb3IobGwgdTphZGpbdl0pCiAgICAgICAgaWYoIWdodW1ha3lhW3VdKQogICAgICAgICAgICBkZnModSk7CiAgICB0b3Bzby5wdXNoX2JhY2sodik7Cn0KCnZvaWQgc29ydGthcmRlYmhhaShsbCBuKQp7CiAgICBmb3IobGwgaT0wOyBpPDEwMDAwMTsgaSsrKQogICAgICAgIGdodW1ha3lhW2ldPWZhbHNlOwogICAgdG9wc28uY2xlYXIoKTsKICAgIGZvcihsbCBpPTA7IGk8bjsgaSsrKQogICAgICAgIGlmKCFnaHVtYWt5YVtpXSkKICAgICAgICAgICAgZGZzKGkpOwogICAgcmV2ZXJzZSh0b3Bzby5iZWdpbigpLCB0b3Bzby5lbmQoKSk7Cn0KCmxsIGZpbmRfc2V0KGxsIHgpCnsKICAgIGlmKHBhcmVudFt4XT09eCkKICAgICAgICByZXR1cm4geDsKICAgIHJldHVybiBwYXJlbnRbeF09ZmluZF9zZXQocGFyZW50W3hdKTsKfQoKdm9pZCB1bmlvbl9zZXQobGwgYSwgbGwgYikKewogICAgbGwgeD1maW5kX3NldChhKSwgeT1maW5kX3NldChiKTsKICAgIGlmKHghPXkpCiAgICB7CiAgICAgICAgYWRqW2FdLnB1c2hfYmFjayhiKTsKICAgICAgICB4PXk7CiAgICB9CiAgICBlbHNlCiAgICAgICAgZXh0cmEucHVzaF9iYWNrKG1ha2VfcGFpcihhLCBiKSk7Cn0KCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKE5VTEwpOwoJY291dC50aWUoTlVMTCk7CglsbCB0OwoJY2luPj50OwoJd2hpbGUodC0tKQoJewoJICAgIGxsIG4sIG07CgkgICAgY2luPj5uPj5tOwoJICAgIGxsIHBlaGxla2F1bltuXSwgYW5kYXJbbl07CgkgICAgYm9vbCBmbGFnPXRydWU7OwoJICAgIHVub3JkZXJlZF9zZXQ8bGw+IGJhYXBsb2dbbl07CgkgICAgaW5pdChuKTsKCSAgICBmb3IobGwgaT0wOyBpPG47IGkrKykKCSAgICB7CgkgICAgICAgIGFuZGFyW2ldPTA7CgkgICAgICAgIGJhYXBsb2dbaV0uY2xlYXIoKTsKCSAgICB9CgkgICAgcGFpcjxsbCwgbGw+IGVkZ2VzW21dOwoJICAgIGZvcihsbCBpPTA7IGk8bTsgaSsrKQoJICAgIHsKCSAgICAgICAgY2luPj5lZGdlc1tpXS5maXJzdD4+ZWRnZXNbaV0uc2Vjb25kOwoJICAgICAgICBlZGdlc1tpXS5maXJzdC0tOwoJICAgICAgICBlZGdlc1tpXS5zZWNvbmQtLTsKCSAgICAgICAgdW5pb25fc2V0KGVkZ2VzW2ldLmZpcnN0LCBlZGdlc1tpXS5zZWNvbmQpOwoJICAgIH0KCSAgICBzb3J0a2FyZGViaGFpKG4pOwoJICAgLy8gY291dDw8ZW5kbDsKCSAgICBmb3IobGwgaT0wOyBpPG47IGkrKykKCSAgICAgICAgcGVobGVrYXVuW3RvcHNvW2ldXT1pOwogICAgICAgIGZvcihhdXRvIGl0PWV4dHJhLmJlZ2luKCk7IGl0IT1leHRyYS5lbmQoKTsgaXQrKykKICAgICAgICB7CiAgICAgICAgICAgIGxsIHBlaGxhPWl0LT5maXJzdCwgZHVzcmE9aXQtPnNlY29uZDsKICAgICAgICAgICAgaWYocGVobGVrYXVuW3BlaGxhXT5wZWhsZWthdW5bZHVzcmFdKQogICAgICAgICAgICAgICAgYWRqW2R1c3JhXS5wdXNoX2JhY2socGVobGEpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBhZGpbcGVobGFdLnB1c2hfYmFjayhwZWhsYSk7CiAgICAgICAgfQogICAgICAgIGZvcihsbCBpPTA7IGk8bjsgaSsrKQogICAgICAgICAgICBmb3IobGwgaj0wOyBqPGFkaltpXS5zaXplKCk7IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYmFhcGxvZ1thZGpbaV1bal1dLmluc2VydChpKTsKICAgICAgICAgICAgICAgIGFuZGFyW2FkaltpXVtqXV0rKzsKICAgICAgICAgICAgfQogICAgICAgIHN0YWNrPGxsPiBzdDsKICAgICAgICBmb3IoYXV0byB4OnRvcHNvKQogICAgICAgICAgICBzdC5wdXNoKHgpOwogICAgICAgIGZvcihsbCBpPTA7IGk8bjsgaSsrKQogICAgICAgICAgICBnaHVtYWt5YVtpXT1mYWxzZTsKICAgICAgICB3aGlsZSghc3QuZW1wdHkoKSkKICAgICAgICB7CiAgICAgICAgICAgIGxsIHU9c3QudG9wKCksIHY7CiAgICAgICAgICAgIHN0LnBvcCgpOwogICAgICAgICAgICBnaHVtYWt5YVt1XT10cnVlOwogICAgICAgICAgICBpZighKGFuZGFyW3VdJjEpKQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGlmKGJhYXBsb2dbdV0uc2l6ZSgpPT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmbGFnPWZhbHNlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXV0byBpdD1iYWFwbG9nW3VdLmJlZ2luKCk7CiAgICAgICAgICAgIGZvciggOyBpdCE9YmFhcGxvZ1t1XS5lbmQoKTsgaXQrKykKICAgICAgICAgICAgICAgIGlmKCFnaHVtYWt5YVsqaXRdKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHY9Kml0OwogICAgICAgICAgICAgICAgICAgIGFuZGFyW3VdLS07CiAgICAgICAgICAgICAgICAgICAgYW5kYXJbdl0rKzsKICAgICAgICAgICAgICAgICAgICBiYWFwbG9nW3VdLmVyYXNlKHYpOwogICAgICAgICAgICAgICAgICAgIGJhYXBsb2dbdl0uaW5zZXJ0KHUpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBpZihpdD09YmFhcGxvZ1t1XS5lbmQoKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxhZz1mYWxzZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHVub3JkZXJlZF9zZXQ8bGw+IGZpbmFsW25dOwogICAgICAgIGZvcihsbCBpPTA7IGk8bjsgaSsrKQogICAgICAgICAgICBmb3IoYXV0byBpdD1iYWFwbG9nW2ldLmJlZ2luKCk7IGl0IT1iYWFwbG9nW2ldLmVuZCgpOyBpdCsrKQogICAgICAgICAgICAgICAgZmluYWxbKml0XS5pbnNlcnQoaSk7CiAgICAgICAgaWYoZmxhZykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihsbCBpPTA7IGk8bTsgaSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsbCB1PWVkZ2VzW2ldLmZpcnN0LCB2PWVkZ2VzW2ldLnNlY29uZDsKICAgICAgICAgICAgICAgIGlmKGZpbmFsW3VdLmZpbmQodik9PWZpbmFsW3VdLmVuZCgpKQogICAgICAgICAgICAgICAgICAgIGNvdXQ8PCIxICI7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgY291dDw8IjAgIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgIGNvdXQ8PCItMSI7CiAgICAgICAgY291dDw8ZW5kbDsKCX0KCXJldHVybiAwOwp9