R,O=range,print I=lambda:input().split() N,M=map(int,I()) p=[i for i in R(N*2)] def r(i): m=p[i] while i!=m: p[i]=i=p[m] m=p[i] return i for m in R(M): i,E,j=I() i,E,j=int(i)-1,E[2]<"=",int(j)-1 p[r(i)],p[r(i+N)]=r(j+N*E),r(j+N-N*E) c=0 C=[0]*N*2 for i in R(N): A,B=p[r(i)],p[r(i+N)] if A==B:O("No"),exit() if C[A]<1:C[A],C[B]=1,2 if C[A]<2:c+=1 if c*2