{
TASK:trees
LANG:PASCAL
}

type
  Masiv = array[0..30000] of Integer;

var
  fath: Masiv;
  ans: Masiv;
  vis: array[0..30000] of Boolean;
  n,m,k: Integer;
  i: Integer;
  gn,BrVis,x: Integer;
  ind: Integer;

procedure Input;

begin
  readln(n,m,k);
  for i:= 1 to n do
    read(fath[i]);
  readln;
  for i:= 0 to n do
    vis[i]:= false;
  for i:= 1 to m do
  begin
    read(gn);
    vis[gn]:= true;
  end;
end;

procedure PosFath(p: Integer);

begin
  vis[p]:= true;
  if (not vis[fath[p]]) then
    PosFath(fath[p]);
end;

procedure Poseteni;

begin
  for i:= 1 to n do
    if vis[i] then
      PosFath(fath[i]);
end;

procedure Solve;

begin
  ind:= 0;
  for i:= 1 to n do
    if (not vis[i]) then
    begin
      ind:= ind+1;
      ans[ind]:= i;
    end;
  for i:= n-BrVis-x+1 to n-BrVis do
    write(ans[i],' ');
  writeln;
end;

begin
  Input; 
  Poseteni;
  BrVis:= 0;
  for i:= 1 to n do
    if vis[i] then
      BrVis:= BrVis+1;
  x:= 1;
  while (x/n)*100 < k do
    x:= x+1;
  if x < n - BrVis then
    Solve
  else
    writeln(n-BrVis);
end.