#define MD 998244353
ll@n,@m,@a[n];
unionFind f('m',n,1);
rep(m){
	ll@u--,@v--;
	f(u,v);
}
rep(i,n){
	ll r=f(i);
	if(r!=i){
		a[r]+=a[i];
	}
}
Mint z=1;
rep(i,n){
	ll r=f(i);
	z*=a[r];
}
wt(z);