#include <bits/stdc++.h>
using namespace std;
typedef long long ll;


int n, m;
ll ans = 0;
int w[10], l[10];
int result[10][10];
void init(){
    ans = 0;
    for(int i = 0; i < 10; i++){
        w[i] = 0;
        l[i] = 0;
        for(int j = 0; j < 10; j++){
            result[i][j] = 0;
        }
    }
}

bool check(){
    for(int i = 1; i <= n; i++){
        if(w[i] * 2 > n)return false;
        if(l[i] * 2 > n)return false;
    }
    return true;
}

void dfs(int a, int b){
    if(!check())return;
    if(a == n){
        ans++;
        return;
    }
    if(b > n){
        dfs(a + 1, a + 2);
        return;
    }
    if(result[a][b]){
        dfs(a, b + 1);
        return;
    }
    w[a]++;
    l[b]++;
    dfs(a, b + 1);
    w[a]--;
    l[b]--;
    l[a]++;
    w[b]++;
    dfs(a, b + 1);
    l[a]--;
    w[b]--;
}

int main(){
    
    while(cin >> n, n){
        cin >> m;
        init();
        for(int i = 0; i < m; i++){
            int a, b;
            cin >> a >> b;
            result[a][b] = 1;
            w[a]++;
            result[b][a] = -1;
            l[b]++;
        }
        dfs(1, 2);
        cout << ans << endl;
    }

    return 0;
}

