0分qwq
#include<bits/stdc++.h>
using namespace std;
int n,m,a[500001],b[500001],chi[5001],si[5001],rd[5001][5001];
long long dp[5001],ax[5001],ans;
int dfs(int now){
if(ax[now]==1){
return dp[now];
}
ax[now]=1;
int k=0;
for(int i=1;i<=n;i++){
if(rd[now][i]==1){
dp[now]=dp[now]+dfs(i);
dp[now]=dp[now]%80112002;
k=1;
}
}
if(k==0){
dp[now]=1;
}
return dp[now];
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>a[i]>>b[i];
si[a[i]]++;
chi[b[i]]++;
rd[a[i]][b[i]]=1;
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(si[i]<si[j]){
swap(si[i],si[j]);
swap(chi[i],chi[j]);
}
}
}
int i=1;
while(chi[i]==0){
i++;
ans=(ans+dfs(i))%80112002;
}
cout<<ans<<endl;
return 0;
}