1 #include <iomanip>
2 #include <cstdio>
3 #include <cmath>
4 #include <cstring>
5 #include <algorithm>
6 #include <queue>
7 #include <stack>
8 #include <vector>
9 using namespace std;
10 vector<int>e[100100];
11 int n,m,t,k,inbug[100100],sum,a[101000],vi[101000];
12 void topsort()
13 {
14 queue<int>q;
15 for(int i=1;i<=n;i++)
16 if(inbug[i]==0)
17 q.push(i);
18 while(!q.empty())
19 {
20 int now=q.front();
21 q.pop();
22 for(int i=0;i<e[now].size();i++)
23 {
24 if(--inbug[e[now][i]]==0)
25 q.push(e[now][i]);
26 vi[e[now][i]]=(vi[e[now][i]]+vi[now])%142857;
27 }
28 }
29
30 }
31 int main(int argc, char *argv[])
32 {
33 scanf("%d%d%d",&n,&m,&k);
34 memset(vi,0,sizeof(vi));
35 for(int i=1;i<=n;i++)
36 e[i].clear();
37 memset(inbug,0,sizeof(inbug));
38 memset(a,0,sizeof(a));
39 for(int i=0;i<k;i++)
40 {
41 int t;
42 scanf("%d",&t);
43 vi[t]++;;
44 }
45 while(m--)
46 {
47 int u,v;
48 scanf("%d%d",&u,&v);
49 e[u].push_back(v);
50 inbug[v]++;
51 }
52 topsort();
53 sum=0;
54 for(int i=1;i<=n;i++)
55 sum=(sum+vi[i])%142857;
56 printf("%d\n",sum);
57 return 0;
58 }