#include <cstdio>
#include <algorithm>
using namespace std;
const int MOD = 55566677;
int main(){
int P[60]={1};
for(int i=1;i<60;i++) P[i]=P[i-1]*1ll*i%MOD;
int n,m,x[25],y[25];
while(scanf("%d%d",&n,&m)==2){
for(int i=0;i<m;i++) scanf("%d%d",x+i,y+i);
for(int i=0;i<m;i++) for(int j=i+1;j<m;j++){
if(x[i]==x[j] && y[i]==y[j]){
swap(x[j],x[m-1]);
swap(y[j],y[--m]);
}
}
int mask=(1<<m)-1,ans=P[n],s=0;
int pos[60]={},use[60]={},cnt=0,err=0;
for(int c=1;c<=mask;c++){
int i=__builtin_ctz(c);
s^=1<<i;
if(1<<i&s){
cnt++;
if(pos[x[i]]++==1) err++;
if(use[y[i]]++==1) err++;
}else{
cnt--;
if(--pos[x[i]]==1) err--;
if(--use[y[i]]==1) err--;
}
if(err) continue;
if(cnt&1) ans-=P[n-cnt]; else ans+=P[n-cnt];
if(ans<0) ans+=MOD;
if(ans>=MOD) ans-=MOD;
}
printf("%d\n",ans);
}
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNT0QgPSA1NTU2NjY3NzsKCmludCBtYWluKCl7CiAgICBpbnQgUFs2MF09ezF9OwogICAgZm9yKGludCBpPTE7aTw2MDtpKyspIFBbaV09UFtpLTFdKjFsbCppJU1PRDsKICAgIGludCBuLG0seFsyNV0seVsyNV07CiAgICB3aGlsZShzY2FuZigiJWQlZCIsJm4sJm0pPT0yKXsKICAgICAgICBmb3IoaW50IGk9MDtpPG07aSsrKSBzY2FuZigiJWQlZCIseCtpLHkraSk7CiAgICAgICAgZm9yKGludCBpPTA7aTxtO2krKykgZm9yKGludCBqPWkrMTtqPG07aisrKXsKICAgICAgICAgICAgaWYoeFtpXT09eFtqXSAmJiB5W2ldPT15W2pdKXsKICAgICAgICAgICAgICAgIHN3YXAoeFtqXSx4W20tMV0pOwogICAgICAgICAgICAgICAgc3dhcCh5W2pdLHlbLS1tXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaW50IG1hc2s9KDE8PG0pLTEsYW5zPVBbbl0scz0wOwogICAgICAgIGludCBwb3NbNjBdPXt9LHVzZVs2MF09e30sY250PTAsZXJyPTA7CiAgICAgICAgZm9yKGludCBjPTE7Yzw9bWFzaztjKyspewogICAgICAgICAgICBpbnQgaT1fX2J1aWx0aW5fY3R6KGMpOwogICAgICAgICAgICBzXj0xPDxpOwogICAgICAgICAgICBpZigxPDxpJnMpewogICAgICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgICAgICBpZihwb3NbeFtpXV0rKz09MSkgZXJyKys7CiAgICAgICAgICAgICAgICBpZih1c2VbeVtpXV0rKz09MSkgZXJyKys7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgY250LS07CiAgICAgICAgICAgICAgICBpZigtLXBvc1t4W2ldXT09MSkgZXJyLS07CiAgICAgICAgICAgICAgICBpZigtLXVzZVt5W2ldXT09MSkgZXJyLS07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoZXJyKSBjb250aW51ZTsKICAgICAgICAgICAgaWYoY250JjEpIGFucy09UFtuLWNudF07IGVsc2UgYW5zKz1QW24tY250XTsKICAgICAgICAgICAgaWYoYW5zPDApIGFucys9TU9EOwogICAgICAgICAgICBpZihhbnM+PU1PRCkgYW5zLT1NT0Q7CiAgICAgICAgfQogICAgICAgIHByaW50ZigiJWRcbiIsYW5zKTsKICAgIH0KfQo=