using namespace std;
vector<int> mp[10001];
bool B[10001];
bool c[10001];
int w;
void dfs(int x){
if(c[x]==1)w++;
for(int i=0;i<mp[x].size();i++){
if(B[mp[x][i]]==0){
B[mp[x][i]]=1;
dfs(mp[x][i]);
//B[mp[x][i]]=0;
}
}
}
int main(){
int k,n,m;
cin>>k>>n>>m;
memset(c,0,sizeof(c));
for(int i=1;i<=k;i++){
int x;
cin>>x;
c[x]=1;
}
for(int i=1;i<=m;i++){
int y,x;
cin>>x>>y;
mp[y].push_back(x);
}
// for(int i=1;i<=n;i++){
// sort(mp[i].begin(),mp[i].end());
// }
B[1]=1;
int num=0;
for(int i=1;i<=n;i++){
memset(B,0,sizeof(B));
w=0;
dfs(i);
if(w==k)num++;
}
cout<<num;
}