program holmes;

var
   d, n, a, b, koliko, x : integer;
   m, i : longint;
   impl1, impl2 : array[1 .. 1000,1 .. 1000] of boolean;
   prije : array[1 .. 1000] of integer;
   bio1, bio2 : array[1 .. 1000] of boolean;
   rj : array[1 .. 1000] of integer;

procedure Ispisi1 (x : integer);
var
   i : integer;
begin
   if bio1[x] then exit;
   Inc (koliko); rj[koliko] := x;
   bio1[x] := true;
   for i := 1 to d do
      if impl1[x,i] then Ispisi1 (i);
end;

procedure Ispisi2 (x : integer);
var
   i : integer;
begin
   if bio2[x] then exit;
   if not bio1[x] then begin
      Inc (koliko); rj[koliko] := x;
   end;
   bio2[x] := true;
   for i := 1 to d do
      if impl2[x,i] and (prije[i]=1) then Ispisi2 (i);
end;

begin
   readln (d, m, n);
   for i := 1 to m do begin
      readln (a, b);
      impl1[a,b] := true; impl2[b,a] := true;
      Inc (prije[b]);
   end;
   for i := 1 to n do begin
      readln (x); Ispisi1 (x); Ispisi2 (x);
   end;
   for i := 1 to koliko-1 do
      write (rj[i], ' ');
   writeln (rj[koliko]);
end.