#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int cow[1005],edge[1005][1005],k,n,m,visit_sum[1005];
bool visit[1005];
void dfs(int cow_i){
int i;
visit[cow_i] = 1;
for(i=1;i<=n;i++){
if(edge[cow_i][i]==1&&visit[i]==0){
visit[i] = 1;
dfs(i);
}
}
}
int main(){
int i,j,row,col,sum;
scanf("%d%d%d",&k,&n,&m);
for(i=1;i<=k;i++){
scanf("%d",&cow[i]);
}
memset(edge,0,sizeof edge);
for(i=1;i<=m;i++){
scanf("%d%d",&row,&col);
edge[row][col] = 1;
}
// for(i=1;i<=n;i++){
// for(j=1;j<=n;j++){
// cout<<edge[i][j]<<" ";
// }
// cout<<endl;
// }
memset(visit_sum,0,sizeof visit_sum);
for(i=1;i<=k;i++){
memset(visit,0,sizeof visit);
dfs(cow[i]);
for(j=1;j<=n;j++){
visit_sum[j] += visit[j];
}
}
sum = 0;
for(i=1;i<=n;i++){
if(visit_sum[i]==k){
sum++;
}
}
printf("%d\n",sum);
return 0;
}