#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
const int N=5005;
vector<int> chin[N];
int rot[N]={0};
int root;
long long cnt=0;
long long track[N]={0};
void dfs(int x)
{if(track[x])return;
if(chin[x].empty()){track[x]++;
return;}
int t=chin[x].size();
while(t--)
{
dfs(chin[x][t]);
track[x]+=track[chin[x][t]];
}
}
int main()
{int z,y;
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>z>>y;
chin[y].push_back(z);
rot[z]=1;
}
for(int i=1;i<=n;i++)
{
if(rot[i]==0){root=i;dfs(root);cnt+=track[root];}
}
cout<<cnt%80112002;
}