#include "stdafx.h"
using namespace std;
#include <vector>
#include <stack>
typedef vector<int> Vi;
typedef vector<Vi> Gi;
typedef stack<int> Si;
typedef vector<bool> Vb;
Gi grafo, grafoRev;
Si pila, pilaRev;
Vb visitado, visitadoRev;
int N, M, u, v, p;
void DFS(int nodo)
{
visitado[nodo] = true;
for (int i = 0; i < grafo[nodo].size(); i++)
{
if (!visitado[grafo[nodo][i]])
DFS(grafo[nodo][i]);
}
pila.push(nodo);
}
void DFS_Rev(int nodo)
{
visitadoRev[nodo] = true;
for (int i = 0; i < grafoRev[nodo].size(); i++)
{
if (!visitadoRev[grafoRev[nodo][i]])
DFS_Rev(grafoRev[nodo][i]);
}
pilaRev.push(nodo);
}
int main()
{
/*
4 5
1 2 1
1 3 2
2 4 1
3 4 1
4 1 2
3 2
1 2 2
1 3 2
3 2
1 2 2
1 3 1
4 2
1 2 2
3 4 2
0 0
*/
while (true)
{
scanf("%d %d", &N, &M);
if (N == 0 && M == 0)
break;
grafo = Gi(N);
grafoRev = Gi(N);
visitado = Vb(N);
visitadoRev = Vb(N);
for (int i = 0;i < M;i++)
{
scanf("%d %d %d", &u, &v, &p);
u--; v--;
if (p == 1)
{
grafo[u].push_back(v);
grafoRev[v].push_back(u);
}
else {
grafo[u].push_back(v);
grafoRev[v].push_back(u);
grafo[v].push_back(u);
grafoRev[u].push_back(v);
}
}
for (int i = 0;i < N;i++)
{
if (!visitado[i])
DFS(i);
}
DFS_Rev(pila.top());
printf("%d\n", pilaRev.size == N ? 1 : 0);
}
CiNpbmNsdWRlICJzdGRhZnguaCIKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzdGFjaz4KCnR5cGVkZWYgdmVjdG9yPGludD4gVmk7CnR5cGVkZWYgdmVjdG9yPFZpPiBHaTsKdHlwZWRlZiBzdGFjazxpbnQ+IFNpOwp0eXBlZGVmIHZlY3Rvcjxib29sPiBWYjsKCkdpIGdyYWZvLCBncmFmb1JldjsKU2kgcGlsYSwgcGlsYVJldjsKVmIgdmlzaXRhZG8sIHZpc2l0YWRvUmV2OwoKaW50IE4sIE0sIHUsIHYsIHA7Cgp2b2lkIERGUyhpbnQgbm9kbykKewp2aXNpdGFkb1tub2RvXSA9IHRydWU7Cgpmb3IgKGludCBpID0gMDsgaSA8IGdyYWZvW25vZG9dLnNpemUoKTsgaSsrKQp7CmlmICghdmlzaXRhZG9bZ3JhZm9bbm9kb11baV1dKQpERlMoZ3JhZm9bbm9kb11baV0pOwp9CgpwaWxhLnB1c2gobm9kbyk7Cn0KCnZvaWQgREZTX1JldihpbnQgbm9kbykKewp2aXNpdGFkb1Jldltub2RvXSA9IHRydWU7Cgpmb3IgKGludCBpID0gMDsgaSA8IGdyYWZvUmV2W25vZG9dLnNpemUoKTsgaSsrKQp7CmlmICghdmlzaXRhZG9SZXZbZ3JhZm9SZXZbbm9kb11baV1dKQpERlNfUmV2KGdyYWZvUmV2W25vZG9dW2ldKTsKfQoKcGlsYVJldi5wdXNoKG5vZG8pOwp9CgppbnQgbWFpbigpCnsKLyoKNCA1CjEgMiAxCjEgMyAyCjIgNCAxCjMgNCAxCjQgMSAyCjMgMgoxIDIgMgoxIDMgMgozIDIKMSAyIDIKMSAzIDEKNCAyCjEgMiAyCjMgNCAyCjAgMAoqLwoKd2hpbGUgKHRydWUpCnsKc2NhbmYoIiVkICVkIiwgJk4sICZNKTsKCmlmIChOID09IDAgJiYgTSA9PSAwKQpicmVhazsKCmdyYWZvID0gR2koTik7CmdyYWZvUmV2ID0gR2koTik7Cgp2aXNpdGFkbyA9IFZiKE4pOwp2aXNpdGFkb1JldiA9IFZiKE4pOwoKZm9yIChpbnQgaSA9IDA7aSA8IE07aSsrKQp7CnNjYW5mKCIlZCAlZCAlZCIsICZ1LCAmdiwgJnApOwoKdS0tOyB2LS07CgppZiAocCA9PSAxKQp7CmdyYWZvW3VdLnB1c2hfYmFjayh2KTsKZ3JhZm9SZXZbdl0ucHVzaF9iYWNrKHUpOwp9CmVsc2UgewpncmFmb1t1XS5wdXNoX2JhY2sodik7CmdyYWZvUmV2W3ZdLnB1c2hfYmFjayh1KTsKZ3JhZm9bdl0ucHVzaF9iYWNrKHUpOwpncmFmb1Jldlt1XS5wdXNoX2JhY2sodik7Cn0KfQoKCmZvciAoaW50IGkgPSAwO2kgPCBOO2krKykKewppZiAoIXZpc2l0YWRvW2ldKQpERlMoaSk7Cn0KCkRGU19SZXYocGlsYS50b3AoKSk7CnByaW50ZigiJWRcbiIsIHBpbGFSZXYuc2l6ZSA9PSBOID8gMSA6IDApOwoKfQ==