#include <cstdio>
#include <vector>
using namespace std;



vector<int> v[210];

vector<int> vComp[210];



int comp[210], stiva[210], nivmin[210], niv[210], viz[210], t[210], val[210], nInv;
int N, M;

int ncomp, stivaLast = -1, ult = -1;

void sortareTopologica(int i)

{

int j;

(viz + N)[i] = 1;

for(j = 0; j < vComp[i].size(); ++j)

if(!(viz + N)[ vComp[i][j] ]) sortareTopologica( vComp[i][j] );

t[i] = ++ult;

}



void comp_tare(int i)

{

int j;

(viz + N)[i] = 1;

stiva[++stivaLast] = i;

for(j = 0; j < (v + N)[i].size(); ++j)

if(!(viz + N)[ (v + N)[i][j] ])

{

(niv + N)[ (v + N)[i][j] ] = (nivmin + N)[ (v + N)[i][j] ]= (niv + N)[i] + 1;

comp_tare((v + N)[i][j]);

if((nivmin + N)[ (v + N)[i][j] ] < (nivmin + N)[i]) (nivmin + N)[i] = (nivmin + N)[ (v + N)[i][j] ];

}

else if((niv + N)[ (v + N)[i][j] ] < (nivmin + N)[i]) (nivmin + N)[i] = (niv + N)[ (v + N)[i][j] ];

if((niv + N)[i] == (nivmin + N)[i])

{

(comp + N)[i] = ++ncomp;

for(j = stivaLast; j >= 0 && stiva[j] != i; --j)

(comp + N)[stiva[j]] = ncomp;

stivaLast = j - 1;

}

}

void add(int x, int y, int t)

{

if(t == 0)

{

(v + N)[-x].push_back(y);

(v + N)[-y].push_back(x);

}

else if(t == 1) (v + N)[-x].push_back(-y);

else if(t == 2) (v + N)[-y].push_back(-x);

else if(t == 3)

{

(v + N)[x].push_back(-y);

(v + N)[y].push_back(-x);

}

}



int main()

{

int i, j, x, y, tt;



freopen("party.in", "r", stdin);

freopen("party.out", "w", stdout);


scanf("%d %d", &N, &M);

for(i = 1; i <= M; ++i)

{

scanf("%d %d %d", &x, &y, &tt);

add(x, y, tt);

}


for(i = -N; i <= N; ++i)

if(i == 0) continue;

else if(!(viz + N)[i])

{

(niv + N)[i] = (nivmin + N)[i] = 1;

comp_tare(i);

}

for(i = -N; i <= N; ++i)

if(i == 0) continue;

else for(j = 0; j < (v + N)[i].size(); ++j)

if((comp + N)[i] != (comp + N)[ (v + N)[i][j] ])

vComp[ (comp + N)[i] ].push_back((comp + N)[ (v + N)[i][j] ]);



for(i = 1; i <= ncomp; ++i) (viz + N)[i] = 0;

for(i = 1; i <= ncomp; ++i)

if(!(viz + N)[i]) sortareTopologica(i);



for(i = 1; i <= N; ++i)

{

if(t[ (comp + N)[i] ] < t[ (comp + N)[-i] ]) val[i] = 1, ++nInv;

else val[i] = 0;

}

printf("%d\n", nInv);

for(i = 1; i <= N; ++i)

if(val[i]) printf("%d\n", i);

return 0;



}