#include <iostream>
#include <vector>
using namespace std;
int kind, num, ans;
vector<vector<bool>> eat;
vector<long long> dp;
void getAns(const vector<int> &now)
{
vector<int> next;
vector<bool> note(kind, false);
for(int i = 0; i < now.size(); i++)
note[now[i]] = true;
for(int i = 0; i < now.size(); i++)
{
for(int j = 0; j < kind; j++)
{
if(eat[j][now[i]])
{
if(!note[j])
{
next.push_back(j);
note[j] = true;
}
dp[j] = (dp[j] + dp[now[i]]) % 80112002;
}
}
}
if(next.size() != 0)
getAns(next);
}
int main()
{
cin >> kind >> num;
eat.resize(kind, vector<bool>(kind, false));
dp.resize(kind, 0);
vector<bool> always_be_eaten(kind, true), always_be_eater(kind, true);
for(int i = 0; i < num; i++)
{
int eaten, eater;
cin >> eaten >> eater;
eat[eater - 1][eaten - 1] = true;
always_be_eaten[eater - 1] = false;
always_be_eater[eaten - 1] = false;
}
vector<int> begin;
for(int i = 0; i < kind; i++)
{
if(always_be_eaten[i])
{
begin.push_back(i);
dp[i] = 1;
}
}
getAns(begin);
for(int i = 0; i < kind; i++)
{
if(always_be_eater[i])
ans += dp[i];
}
cout << ans << endl;
return 0;
}