#include<bits/stdc++.h>
using namespace std;
const int N=15,mod=1e9+7;
int n,m,e[N],sz[1<<N],dp[1<<N];
int main()
{
	scanf("%d%d",&n,&m);int nn=1<<n;dp[0]=1;
	for(int i=1,u,v;i<=m;i++){scanf("%d%d",&u,&v);u--;v--;e[u]|=(1<<v);}
	for(int i=0;i<nn;i++)for(int j=0;j<n;j++)if(i>>j&1)sz[i]++;
	for(int i=0;i<nn;i++)sz[i]=1<<sz[i];
	for(int S=1;S<nn;S++)if((S&1)==(S>>1&1))for(int T=S;T;T=(T-1)&S)if((T&1)==(T>>1&1))
	{
		int r=1,U=S^T;
		for(int i=0;i<n;i++)if(T>>i&1)r=1ll*r*sz[e[i]&U]%mod;else if(U>>i&1)r=1ll*r*(sz[e[i]&T]-1)%mod;
		dp[S]=(dp[S]+1ll*dp[U]*r)%mod;
	}
	int ans=1;
	for(int i=1;i<=m;i++)ans=2*ans%mod;
	printf("%d\n",(ans+mod-dp[nn-1])%mod);
	return 0;
}