#include <cstdio>
#include <cstring>
#include <algorithm>
#define P 1000000007
#define ct(x) __builtin_popcount(x)
#define Log(x) (Sym[(x) % 37])

using namespace std;

int n, m, B[15], R[15], Sym[55];

long long F[1 << 15], ans = 1;

int main() {
    for(int i = 0; i < 30; i++) Sym[(1 << i) % 37] = i;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= m; i++) ans = ans * 2 % P;
    while(m--) {
        int x, y;
        scanf("%d%d", &x, &y);
        B[--x] |= (1 << --y);
        R[y] |= (1 << x);
    }
    F[0] = 1;
    for(int i = 1; i < (1 << n); i++) if(!!(i & 1) ^ !(i & 2))
        for(int j = i; j; j = (j - 1) & i) if(!!(j & 1) ^ !(j & 2)) {
            long long s = (1 << n) - i - 1, tmp = 1;
            for(int k = 0; k < n; k++)
                if((s >> k) & 1) tmp = tmp * ((1 << ct(B[k] & j)) - 1) % P * (1 << ct(R[k] & j)) % P;
            F[i] = (F[i - j] * tmp + F[i]) % P;
        }
    printf("%lld\n", ((ans - F[(1 << n) - 1]) % P + P) % P);
    return 0;
}