//C++ implementation of Tarjan Algorithm
#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#include<stack>
#include<cstdlib>
#include<algorithm>
using namespace std;
#define MAX 2003
stack<int>st;
bool stacked[MAX];
vector<vector<int> >G(MAX);
int low[MAX],disc[MAX],c=0;
void tarzan(int u)
{
static int timer=0;
disc[u]=low[u]=++timer;
st.push(u);
stacked[u]=true;
for(int i=0;i<G[u].size();i++)
{
int v=G[u][i];
if(disc[v]==-1)
{
tarzan(v);
low[u]=min(low[u],low[v]);
}
else if(stacked[v])
{
low[u]=min(low[u],disc[v]);
}
}
int w=0;
if(low[u]==disc[u])
{
c++;
while(st.top()!=u)
{
stacked[w]=false;
st.pop();
}
w=st.top();
stacked[w]=false;
st.pop();
}
}
int main()
{
int m,n;
cin>>n>>m;
while(m|n)
{
for(int i=1;i<=m;i++)
{
int x,y,k;
cin>>x>>y>>k;
if(k==1)
G[x].push_back(y);
else
{
G[x].push_back(y);
G[y].push_back(x);
}
}
c=0;
memset(disc,-1,sizeof disc);
memset(stacked,false,sizeof stacked);
memset(low,-1,sizeof low);
for(int i=1;i<=n;i++)
{
if(disc[i]==-1)
tarzan(i);
}
(c==1)?cout<<"1\n":cout<<"0\n";
cin>>n>>m;
for(int i=1;i<=n;i++)
G[i].clear();
}
}
Ly9DKysgaW1wbGVtZW50YXRpb24gb2YgVGFyamFuIEFsZ29yaXRobQojaW5jbHVkZTxjc3RkaW8+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPHN0YWNrPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTUFYIDIwMDMKc3RhY2s8aW50PnN0Owpib29sIHN0YWNrZWRbTUFYXTsKdmVjdG9yPHZlY3RvcjxpbnQ+ID5HKE1BWCk7CmludCBsb3dbTUFYXSxkaXNjW01BWF0sYz0wOwp2b2lkIHRhcnphbihpbnQgdSkKewoJc3RhdGljIGludCB0aW1lcj0wOwoJZGlzY1t1XT1sb3dbdV09Kyt0aW1lcjsKCXN0LnB1c2godSk7CglzdGFja2VkW3VdPXRydWU7Cglmb3IoaW50IGk9MDtpPEdbdV0uc2l6ZSgpO2krKykKCXsKCQlpbnQgdj1HW3VdW2ldOwoJCWlmKGRpc2Nbdl09PS0xKQoJCXsKCQkJdGFyemFuKHYpOwoJCQlsb3dbdV09bWluKGxvd1t1XSxsb3dbdl0pOwoJCX0KCQllbHNlIGlmKHN0YWNrZWRbdl0pCgkJewoJCQlsb3dbdV09bWluKGxvd1t1XSxkaXNjW3ZdKTsKCQl9Cgl9CglpbnQgdz0wOwoJaWYobG93W3VdPT1kaXNjW3VdKQoJewoJCWMrKzsKCQl3aGlsZShzdC50b3AoKSE9dSkKCQl7CgkJCXN0YWNrZWRbd109ZmFsc2U7CgkJCXN0LnBvcCgpOwoJCX0KCQl3PXN0LnRvcCgpOwoJCXN0YWNrZWRbd109ZmFsc2U7CgkJc3QucG9wKCk7Cgl9Cn0KaW50IG1haW4oKQp7CglpbnQgbSxuOwoJY2luPj5uPj5tOwoJd2hpbGUobXxuKQoJewoJCWZvcihpbnQgaT0xO2k8PW07aSsrKQoJCXsKCQkJaW50IHgseSxrOwoJCQljaW4+Png+Pnk+Pms7CgkJCWlmKGs9PTEpCgkJCUdbeF0ucHVzaF9iYWNrKHkpOwoJCQllbHNlCgkJCXsKCQkJR1t4XS5wdXNoX2JhY2soeSk7CgkJCUdbeV0ucHVzaF9iYWNrKHgpOwoJCQl9CgkJfQoJCWM9MDsKCQltZW1zZXQoZGlzYywtMSxzaXplb2YgZGlzYyk7CgkJbWVtc2V0KHN0YWNrZWQsZmFsc2Usc2l6ZW9mIHN0YWNrZWQpOwoJCW1lbXNldChsb3csLTEsc2l6ZW9mIGxvdyk7CgkJZm9yKGludCBpPTE7aTw9bjtpKyspCgkJewoJCWlmKGRpc2NbaV09PS0xKQoJCXRhcnphbihpKTsKCQl9CgkJKGM9PTEpP2NvdXQ8PCIxXG4iOmNvdXQ8PCIwXG4iOwoJCWNpbj4+bj4+bTsKCQlmb3IoaW50IGk9MTtpPD1uO2krKykKCQlHW2ldLmNsZWFyKCk7Cgl9Cn0=