#include<iostream>
#include<vector>
using namespace std;
int n,m,a,b;
long long mod=80112002;
vector<int> x[5005],y[5005];
int ans=0,cur[5005];
void dfs(int c){
if(y[c].empty()){
ans++;ans%=mod;
cur[c]=1;
return;
}
for(int i=0;i<y[c].size();i++){
if(cur[y[c][i]]){
ans+=cur[y[c][i]];
ans%=mod;
}
else {
ans%=mod;
int ansc=ans;
dfs(y[c][i]);
cur[y[c][i]]=(ans-ansc)%mod;
ans%=mod;
}
}
}
int main()
{
cin>>n>>m;
for(int i=0;i<m;i++){
cin>>a>>b;
x[b].push_back(a);
y[a].push_back(b);
}
for(int i=1;i<=n;i++){
if(x[i].empty()){
dfs(i);
}
}
cout<<ans<<endl;
return 0;
}