#include<bits/stdc++.h>
#define int long long
using namespace std;
struct node{
int nxt,ver;
}a[100001];
int head[100001],tot;
int n,m;
void add(int x,int y){
a[++tot].nxt=head[x];
head[x]=tot;
a[tot].ver=y;
}
int in[100001];
int out[100001];
int dp[100001];
int top_sort(){
queue<int> q;
for(int i=1;i<=n;i++){
if(!in[i]){
dp[i]=1;
q.push(i);
}
}
int ans=0;
while(!q.empty()){
int x=q.front();
q.pop();
for(int i=head[x];i;i=a[i].nxt){
dp[i]=(dp[i]+dp[x])%80112002;
in[a[i].ver]--;
if(!in[a[i].ver]){
if(!out[a[i].ver]){
ans=(ans+dp[a[i].ver])%80112002;
}
q.push(a[i].ver);
}
}
}
return ans;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
add(x,y);
in[y]++;
out[x]++;
}
cout<<top_sort();
return 0;
}