#include <bits/stdc++.h>
using namespace std;
long long a[5010];
bool f[5010],fa[5010];
vector<long long> vc[5010];
long long dfs(long long n)
{
long long ans=0,k=0;
ans=0;
if(a[n])
return a[n];
bool flg=0;
for(auto x:vc[n])
{
flg=1;
k=dfs(x)%80112002;
ans+=k;
ans%=80112002;
//cout<<n<<" "<<x<<" "<<ans-k<<endl;
}
if(!flg)
ans++;
ans%=80112002;
a[n]=ans;
return a[n];
}
int main()
{
long long n,m,x,y;
long long mx=0;
scanf("%lld%lld",&n,&m);
for(long long i=1;i<=m;i++)
{
scanf("%lld%lld",&x,&y);
f[x]=1;
vc[y].push_back(x);
}
for(long long i=1;i<=n;i++)
{
if(!f[i])
mx+=dfs(i)%80112002;
}
printf("%lld",mx%80112002);
return 0;
}