#include<iostream>
using namespace std;
const int mod = 80112002;
int n, m;
long long t;
bool eat[5010][5010],dingdian[5010];
void check(int s)
{
for (int i = 1;i <= n;i++)
{
if (eat[s][i])
{
dingdian[s] = false;
return;
}
}
dingdian[s]=true;
return;
}
void dfs(int u)
{
if (dingdian[u])
{
t++;
t %= mod;
return;
}
for (int i = 1;i <= n;i++)
{
if (eat[u][i])
{
dfs(i);
}
}
}
int main()
{
cin >> n >> m;
while (m--)
{
int beichi, chi;
cin >> beichi >> chi;
eat[chi][beichi] = true;
}
for (int i = 1;i <= n;i++)
{
check(i);
}
for (int i = 1;i <= n;i++)
{
bool k = true;
for (int j = 1;j <= n;j++)
{
if (eat[j][i])
{
k = false;
break;
}
}
if (k)
{
dfs(i);
}
}
cout << t;
return 0;
}