import java.util.*;
public class Main {
static final int mod = 80_112_002;
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt(), m = cin.nextInt();
int[] in = new int[n], out = new int[n];
List<Integer>[] adjs = new List[n];
for (int i=0; i<n; i++) adjs[i] = new LinkedList<>();
for (int i=0; i<m; i++) {
int a = cin.nextInt()-1, b = cin.nextInt()-1;
in[b]++;
out[a]++;
adjs[a].add(b);
}
int[] dp = new int[n];
Deque<Integer> q = new LinkedList<>();
for (int i=0; i<n; i++) {
if (in[i]==0) {
q.offer(i);
dp[i] = 1;
}
}
while (!q.isEmpty()) {
int u = q.poll();
for (int v : adjs[u]) {
dp[v] = (dp[v] + dp[u]) % mod;
if (--in[v] == 0) {
q.offer(v);
}
}
}
int ans = 0;
for (int i=0; i<n; i++) {
if (out[i]==0)
ans = (ans+dp[i])%mod;
}
System.out.println(ans);
}
}