#include using namespace std; const long long MOD = 998244353; int main(){ int N, Q; cin >> N >> Q; vector>> E(N); for (int i = 0; i < Q; i++){ int A, B, C; cin >> A >> B >> C; A--; B--; E[A].push_back(make_pair(C, B)); E[B].push_back(make_pair(C, A)); } long long ans = 1; vector C(N, -1); for (int i = 0; i < N; i++){ if (C[i] == -1){ C[i] = 0; queue Q; Q.push(i); while (!Q.empty()){ int v = Q.front(); Q.pop(); for (pair P : E[v]){ int w = P.second; if (C[w] == -1){ C[w] = C[v] ^ P.first; Q.push(w); } else if (C[w] != (C[v] ^ P.first)){ ans = 0; } } } ans *= 2; ans %= MOD; } } cout << ans << endl; }