#include<bits/stdc++.h>
#define MAXN 20100
using namespace std;
int n,m,cnt;
bool a[MAXN][MAXN];
int ind[MAXN],ans[MAXN];
int js[MAXN];
bool book[MAXN];
bool book2[MAXN];
queue<int> q;
void input(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
a[x][y]=1;
ind[y]++;
book[x]=1;
book2[y]=1;
}
}
void toposort(){
for(int i=1;i<=n;i++){
if(ind[i]==0){
q.push(i);
}
while(!q.empty()){
int u=q.front();
ans[++cnt]=u;
q.pop();
for(int i=1;i<=n;i++){
if(a[u][i]){
ind[i]--;
if(ind[i]==0){
q.push(i);
}
}
}
}
}
}
int main(){
input();
toposort();
for(int i=1;i<=n;i++){
if(!book[i]){
js[i]=1;
}
}//cout<<"cnm";
for(int i=cnt;i>1;i--){
for(int j=1;j<i;j++){
if(a[ans[j]][ans[i]]){
js[ans[j]]+=js[ans[i]]%80112002;
js[ans[j]]%=80112002;
}
}
}
int sum=0;
for(int i=1;i<=n;i++){
if(!book2[i]){
sum+=js[i]%80112002;
sum%=80112002;
}
}
cout<<sum%80112002;
return 0;
}