#include<cstdio>
#include<queue>
using namespace std;
int f,t,n,k,s[5005],next[500005],to[500005],w[5005],way[5005],qrwew34eq[5005];
long long ans;
void add(int d,int dd,int ti)
{
next[ti]=s[d];
s[d]=ti;
to[ti]=dd;
w[dd]++;
qrwew34eq[d]++;
}
queue<int>fin;
int main()
{
scanf("%d%d",&n,&k);
for(int a=1;a<=k;a++)
{
scanf("%d%d",&f,&t);
add(t,f,a);
}
for(int a=1;a<=n;a++)
{
if(!w[a])
{
fin.push(a);
way[a]=1;
}
}
while(!fin.empty())
{
int y=fin.front();
fin.pop();
for(int a=s[y];a;a=next[a])
{
way[to[a]]=(way[to[a]]+way[y])%80112002;
w[to[a]]--;
if(!w[to[a]]) fin.push(to[a]);
}
}
for(int a=1;a<=n;a++)
{
if(!qrwew34eq[a]) ans=(ans+way[a])%80112002;
}
printf("%lld",ans);
return 0;
}