#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
int n,m,k;
bool no[100000],vi[100000];
vector<int>ed1[100000],ed2[100000];
void dfs1(int u){
    if(vi[u])return;
    vi[u]=1;
    for(int i=0;i<ed1[u].size();i++)dfs1(ed1[u][i]);
}
void dfs2(int u){
    if(vi[u])return;
    vi[u]=1;
    for(int i=0;i<ed2[u].size();i++)dfs2(ed2[u][i]);
}
int main(){
    cin>>n>>m>>k;
    for(int i=0;i<m;i++){
        int u,v;
        cin>>u>>v;
        ed1[u].push_back(v);
        ed2[v].push_back(u);
    }
    for(int i=0;i<k;i++){
        int u,v;
        cin>>u>>v;
        dfs1(u);
        for(int j=0;j<n;j++){
            if(vi[j])vi[j]=0;
            else no[j]=1;
        }
        dfs2(v);
        for(int j=0;j<n;j++){
            if(vi[j])vi[j]=0;
            else no[j]=1;
        }
    }
    int ans=0;
    for(int i=0;i<n;i++){
        if(!no[i])ans++;
    }
    cout<<ans<<endl;
    for(int i=0;i<n;i++){
        if(!no[i])cout<<i<<" ";
    }
}
