#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
ll N = 1e9 + 7 ;
ll oo = 1e13 ;
const ll maxx = 1000000 + 3 ;
ll n,m,k,q,x,y,z,l,r,mid,ans;
vector< ll> vis,out;
vector< vector< ll>> adj;
bool imp= false ;
ll c1,c2;
void BFS( ll st) {
queue< ll> q;
q.push ( st) ;
vis[ st] = 1 ;
out[ st] = 1 ;
c1++ ;
while ( ! q.empty ( ) ) {
ll cur = q.front ( ) ;
q.pop ( ) ;
for ( auto x : adj[ cur] ) {
if ( ! vis[ x] ) {
vis[ x] = 1 ;
q.push ( x) ;
out[ x] = 3 - out[ cur] ;
if ( out[ x] == 1 ) c1++ ;
else c2++ ;
}
if ( out[ x] == out[ cur] ) imp = true ;
}
}
}
ll fastpower( ll p,ll mod) {
if ( p== 0 ) return 1 ;
ll s = fastpower( p/ 2 ,mod) % mod;
s* = s;
s% = mod;
if ( p & 1 ) s* = 2 ;
s% = mod;
return s;
}
void solve( ) {
cin >> n >> m;
adj.assign ( n+ 1 ,{ } ) ;
vis.assign ( n+ 1 ,0 ) ;
out.assign ( n+ 1 ,0 ) ;
for ( ll i = 0 ; i< m; i++ ) {
cin >> x>> y;
adj[ x] .push_back ( y) ;
adj[ y] .push_back ( x) ;
}
for ( ll i = 1 ; i<= n; i++ ) {
if ( ! vis[ i] ) {
c1= 0 ,c2= 0 ;
BFS( i) ;
ans= ( ans* ( fastpower( c1,998244353 ) % 998244353 + fastpower( c2,998244353 ) % 998244353 ) % 998244353 ) % 998244353 ;
}
}
if ( imp) { cout << 0 << endl; }
else {
cout << ans<< endl;
}
}
int main( ) {
ios_base:: sync_with_stdio ( false ) ; cin .tie ( 0 ) ; cout .tie ( 0 ) ;
ll t= 1 ;
cin >> t;
while ( t-- ) {
ans= 1 ;
solve( ) ;
imp = false ;
}
/*
Latvia was never a country on my radar, but I spent a weekend in Riga for the Women in Fly to Riga and back in less than 100 dollars”, “celebrate stag party with your friends”, “order erotic massages in the best lounges of the city” were tempting appeals for many British, Irish, Swedish, Finnish, German and Benelux men and Riga has no shortage of sex tourism
*/
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVuZGwgJ1xuJwpsbCBOID0gMWU5Kzc7CgpsbCBvbyA9MWUxMzsKY29uc3QgbGwgbWF4eCA9IDEwMDAwMDAgKyAzOwpsbCBuLG0sayxxLHgseSx6LGwscixtaWQsYW5zOwp2ZWN0b3I8bGw+dmlzLG91dDsKdmVjdG9yPHZlY3RvcjxsbD4+YWRqOwpib29sIGltcD1mYWxzZTsKbGwgYzEsYzI7CnZvaWQgQkZTKGxsIHN0KSB7CiAgICBxdWV1ZTxsbD5xOwoKICAgIHEucHVzaChzdCk7CiAgICB2aXNbc3RdPTE7CiAgICBvdXRbc3RdPTE7CiAgICBjMSsrOwogICAgd2hpbGUgKCFxLmVtcHR5KCkpIHsKICAgICAgICBsbCBjdXIgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBmb3IgKGF1dG8geCA6IGFkaltjdXJdKSB7CiAgICAgICAgICAgIGlmICghdmlzW3hdKSB7CiAgICAgICAgICAgICAgICB2aXNbeF09MTsKICAgICAgICAgICAgICAgIHEucHVzaCh4KTsKICAgICAgICAgICAgICAgIG91dFt4XT0zLW91dFtjdXJdOwogICAgICAgICAgICAgICAgaWYgKG91dFt4XSA9PSAxKWMxKys7CiAgICAgICAgICAgICAgICBlbHNlIGMyKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG91dFt4XT09b3V0W2N1cl0pIGltcCA9IHRydWU7CiAgICAgICAgfQogICAgfQp9CmxsIGZhc3Rwb3dlcihsbCBwLGxsIG1vZCkgewogICAgaWYgKHA9PTApcmV0dXJuICAxOwogICAgbGwgcyA9IGZhc3Rwb3dlcihwLzIsbW9kKSAlIG1vZDsKICAgIHMqPXM7CiAgICBzJT1tb2Q7CiAgICBpZiAocCAmIDEpcyo9MjsKICAgIHMlPW1vZDsKICAgIHJldHVybiBzOwp9CnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbiA+Pm07CiAgICBhZGouYXNzaWduKG4rMSx7fSk7CiAgICB2aXMuYXNzaWduKG4rMSwwKTsKICAgIG91dC5hc3NpZ24obisxLDApOwoKICAgIGZvciAobGwgaSA9MDtpPG07aSsrKSB7CiAgICAgICAgY2luPj54Pj55OwogICAgICAgIGFkalt4XS5wdXNoX2JhY2soeSk7CiAgICAgICAgYWRqW3ldLnB1c2hfYmFjayh4KTsKICAgIH0KICAgIGZvciAobGwgaSA9MTtpPD1uO2krKykgewogICAgICAgIGlmICghdmlzW2ldKSB7CiAgICAgICAgICAgIGMxPTAsYzI9MDsKICAgICAgICAgICAgQkZTKGkpOwogICAgICAgICAgICBhbnM9KGFucyooZmFzdHBvd2VyKGMxLDk5ODI0NDM1MyklOTk4MjQ0MzUzK2Zhc3Rwb3dlcihjMiw5OTgyNDQzNTMpJTk5ODI0NDM1MyklOTk4MjQ0MzUzKSU5OTgyNDQzNTM7CiAgICAgICAgfQogICAgfQogICAgaWYgKGltcCl7Y291dDw8MDw8ZW5kbDt9CiAgICBlbHNlIHsKICAgICAgICBjb3V0PDxhbnM8PGVuZGw7CiAgICB9Cn0KaW50IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBsbCB0PTEgOwogICAgY2luID4+dDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBhbnM9MTsKICAgICAgICBzb2x2ZSgpOwogICAgICAgIGltcCA9ZmFsc2U7CiAgICB9CgovKgoKTGF0dmlhIHdhcyBuZXZlciBhIGNvdW50cnkgb24gbXkgcmFkYXIsIGJ1dCBJIHNwZW50IGEgd2Vla2VuZCBpbiBSaWdhIGZvciB0aGUgV29tZW4gaW4gRmx5IHRvIFJpZ2EgYW5kIGJhY2sgaW4gbGVzcyB0aGFuIDEwMCBkb2xsYXJz4oCdLCDigJxjZWxlYnJhdGUgc3RhZyBwYXJ0eSB3aXRoIHlvdXIgZnJpZW5kc+KAnSwg4oCcb3JkZXIgZXJvdGljIG1hc3NhZ2VzIGluIHRoZSBiZXN0IGxvdW5nZXMgb2YgdGhlIGNpdHnigJ0gd2VyZSB0ZW1wdGluZyBhcHBlYWxzIGZvciBtYW55IEJyaXRpc2gsIElyaXNoLCBTd2VkaXNoLCBGaW5uaXNoLCBHZXJtYW4gYW5kIEJlbmVsdXggbWVuIGFuZCBSaWdhIGhhcyBubyBzaG9ydGFnZSBvZiBzZXggdG91cmlzbQoKCiovCn0=