#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
const int mod=998244353;
int a[2002][2002];
int b[2002][2002];
int n,m;
inline int fp(int a,int b){
int ret=1;
while(b){
if(b&1)ret=1ll*ret*a%mod;
a=1ll*a*a%mod;
b>>=1;
}
return ret;
}
inline int gs(){
register int ret=1,t,sign=0;
for(register int i=1;i<n;++i)
for(register int j=1;j<n;++j)
b[i][j]=(mod+a[i][j])%mod;
for(register int i=1;i<n;++i){
if(!b[i][i]){
register int j;
for(j=i+1;j<n;++j)
if(b[j][i])
break;
if(j==n)
return 0;
for(register int k=i;k<n;++k)
t=b[i][k],b[i][k]=b[j][k],b[j][k]=t;
++sign;
}
ret=1ll*ret*b[i][i]%mod;
for(register int k=i+1;k<n;++k)
b[i][k]=1ll*b[i][k]*fp(b[i][i],mod-2)%mod;
for(register int j=i+1;j<n;++j)
for(register int k=i+1;k<n;++k)
b[j][k]=(b[j][k]-1ll*b[j][i]*b[i][k]%mod+mod)%mod;
}
if(sign&1)
ret=-ret;
return (ret+mod)%mod;
}
inline void build(){
int x,y;
while(m--){
scanf("%d%d", &x, &y);
--a[x][y];--a[y][x];
++a[x][x];++a[y][y];
}
}
int main() {
scanf("%d%d", &n, &m);
build();
printf("%d\n",gs());
return 0;
}