#include <bits/stdc++.h>

using namespace std;

int ans;
int n;
int tab[10][10]; // (i,j) i won against j?
bool fix[10][10];

void reset()
{
    for(int i=0; i<10; ++i)
    {
        for(int j=0; j<10; ++j)
        {
            fix[i][j]=false;
            tab[i][j]=0;
        }
    }
    ans=0;
}

void dfs(int now)
{
    if(now==n)
    {
        ans++;
        return;
    }

    int k=n-1-now;
    int win=now;

    for(int j=0; j<now; ++j)
    {
        win-=tab[j][now];
    }

    for(int s=0; s<1<<k; ++s)
    {
        bool ok=true;
        int poc=0;
        for(int i=0; i<k; ++i)
        {
            if(s>>i&1) poc++;
            int j=i+now+1;
            if(fix[now][j] and (s>>i&1)!=tab[now][j])
            {
                ok=false;
            }
        }
        if(ok and __builtin_popcount(s)+win==n/2)
        {
            for(int i=0; i<k; ++i)
            {
                int j=i+now+1;
                tab[j][now]=!(tab[now][j]=(s>>i&1));
            }
            dfs(now+1);
        }
    }
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);

    while(true)
    {
        cin>>n;
        if(!n) break;
        reset();

        int m; cin>>m;
        while(m--)
        {
            int a,b; cin>>a>>b; --a,--b;
            tab[a][b]=1;
            tab[b][a]=0;
            fix[a][b]=fix[b][a]=1;
        }

        dfs(0);

        cout << ans << "\n";
    }
}
