from collections import deque N, Q = map(int, input().split()) G = [[] for i in range(N)] for _ in range(Q): t, a, b = map(int, input().split()); a -= 1; b -= 1 G[a].append((b, t)) G[b].append((a, t)) A = [-1] * N ans = 0 for st in range(N): if A[st] != -1: continue A[st] = 0 que = deque([st]) while que: v = que.pop() for nv, t in G[v]: if A[nv] == -1: A[nv] = A[v] ^ t que.append(nv) if A[nv] != A[v] ^ t: print(0) exit() ans += 1 print(pow(2, ans, 998244353))