program fish; var ans,tot,n,m,i,j,a,b,c:longint; d:array[1..1000]of longint; e:array[1..50000,1..3]of longint; function calc:boolean; var i,j:longint; begin for i:=1 to n-1 do for j:=1 to tot do if d[e[j,1]]+e[j,3]>d[e[j,2]] then d[e[j,2]]:=d[e[j,1]]+e[j,3]; for j:=1 to tot do if d[e[j,1]]+e[j,3]>d[e[j,2]] then exit(false); exit(true); end; begin readln(n,m); for i:=1 to m do begin read(a,b,c); if c=1 then begin inc(tot);e[tot,1]:=b;e[tot,2]:=a;e[tot,3]:=1;end else if c=-1 then begin inc(tot);e[tot,1]:=a;e[tot,2]:=b;e[tot,3]:=1;end else begin inc(tot);e[tot,1]:=a;e[tot,2]:=b;e[tot,3]:=0; inc(tot);e[tot,2]:=a;e[tot,1]:=b;e[tot,3]:=0; end; end; if calc=false then writeln('NO') else begin for i:=1 to n do if d[i]>ans then ans:=d[i]; writeln(ans); end; end.