#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5010,MOD=80112002;
int n,m,dp[N],a[N],ans;
struct node{
int cnt;
vector<int> v0,v1;
}v[N];
void bfs(){
int tmp=0;
queue<int> q;
for(int i=1;i<=n;++i){
if(v[i].cnt==0){
dp[i]=1;
q.push(i);
}
}
while(!q.empty()){
int x=q.front();
q.pop();
a[++tmp]=x;
for(auto i:v[x].v0){
v[i].cnt--;
if(v[i].cnt==0) q.push(i);
}
}
return ;
}
signed main(){
cin>>n>>m;
while(m--){
int x,y;
cin>>x>>y;
v[x].v0.push_back(y);
v[y].v1.push_back(x);
v[y].cnt++;
}
bfs();
for(int i=1;i<=n;++i){
for(auto j:v[a[i]].v1)
dp[a[i]]+=dp[j];
}
for(int i=1;i<=n;++i){
if(v[i].v0.empty()){
ans+=dp[i];
ans%=MOD;
}
}
cout<<ans%MOD;
return 0;
}