#include <iostream>
#include <vector>
#include <queue>
typedef long long lll;
using namespace std;

struct graf {
       vector<int> in;
       vector <int> out;
} ;





int main() {
    
    int i,d,m,n,x,y,j;
    
    graf g[1001];
    int bio[1001];
    
    cin >> d >> m >> n;
    for (i=1; i<=d; i++) bio[i]=0;
    for (i=1; i<=m; i++) {
        cin >> x >> y;
        g[x].out.push_back(y);
        g[y].in.push_back(x);
        }
    for (j=1; j<=n; j++) { //cout << "bla";
        cin >> x;
        queue<int> q;
        if (bio[x]==0) { bio[x]=1;
        q.push(x);
        while (!q.empty()) {
              x=q.back(); 
              for (i=0; i<g[x].out.size(); i++)
                  if (bio[g[x].out[i]]==0) {
                     bio[g[x].out[i]]=1; //cout << g[x].out[i] << endl;
                     q.push(g[x].out[i]); }
              q.pop();
              }
              } }
              
    for (i=1; i<=d; i++)
        if ((g[i].in.size()==1) && (bio[g[i].in[0]]==0)) { bio[g[i].in[0]]=1; i=g[i].in[0]-1; }
    
    
    bool prvi=true;
    for (i=1; i<=d; i++) 
        if (bio[i]==1) {
           if (prvi) prvi=false;    
           else cout << " ";
           cout << i;
           }   
    

    //system ("pause");
    return 0;
}
