#include <bits/stdc++.h>
using namespace std;
vector<int> e[5005];
int rud[5005],out[5005];
int n,m,u,v,ans;
int val[5005];
int dfs(int n){
if(rud[n]==0) return 1;
if(val[n]) return val[n];
for(int i=0;i<e[n].size();i++){
int now=e[n][i];
val[n]=(val[n]+dfs(now))%80112002;
}
return val[n];
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>u>>v;
e[v].push_back(u);
rud[v]++;
out[u]++;
}
for(int i=1;i<=n;i++){
if(out[i]==0){
ans=(ans+dfs(i))%80112002;
但是不理解为什么这么写代码
}
}
cout<<ans;
return 0;
}