样例输出0;
#include<bits/stdc++.h>
using namespace std;
int n,m,s;
struct node{
int lt,sum;//lt入度,sum值
vector<int>b;//捕食者
}a[5005];
queue<node>q;
int main(){
scanf ("%d%d",&n,&m);
while (m--){
int x,y;
scanf ("%d%d",&x,&y);
a[x].b.push_back(y);
a[y].lt++;
}
for (int i=1;i<=n;i++)
if (!a[i].lt){
q.push(a[i]);
a[i].sum=1;
}
while (!q.empty()){
node l=q.front();
q.pop();
for (int i=0;i<l.b.size();i++){
a[l.b[i]].lt--;
a[l.b[i]].sum+=l.sum,a[l.b[i]].sum%=80112002;
if (!a[l.b[i]].lt)
q.push(a[l.b[i]]);
}
}
for (int i=1;i<=n;i++)
if (!a[i].b.size()) s=(s+a[i].sum)%80112002;
printf("%d\n",s);
return 0;
}