/*
TASK:trees
LANG:C++
*/

#include <iostream>
#include <cstdio>

using namespace std;
int a[30002],b[30002]={0},br,N,M,nbr;
double K;

void inp()
{int i,p,x;
 scanf("%d",&N);
 scanf("%d",&M);
 cin>>K; 
 a[0]=-1;
 for(i=1;i<=N;i++) scanf("%d",&a[i]);
 for(i=0;i<M;i++)
 {scanf("%d",&p);
  do
  {x=a[p];
   a[p]=-1;
   p=x;
  }while(p!=-1);
 }
}

void broi()
{int i;
 br=N;
 for(i=1;i<=N;i++)
  if(a[i]==-1) br--;
}

int pr()
{double x=(double)K/100;
 double y;
 y=(double)br/N;
 if(y<x) return -1;
 if(y==x) return 0;
 int i;
 for(i=1;i<br;i++)
 {y=(double)(br-i)/N;
  if(y==x) {nbr=br-i; return 1;}
  if(y<x) {nbr=br-i+1; return 1;}
 }
 if(K>0) {nbr=1;return 1;}
 if(!K) return -1;
}

void proc()
{int i,j,m;
 do
 {m=-2;
  for(i=N;i>=1;i--)
   if(b[i]>m) m=b[i];
  for(i=N;i>=1;i--)
   if(m==b[i])
    {a[i]=-200;nbr--;b[i]=0;
     if(!nbr) return;
    }
 }while(1);
}

int main()
{inp();
 if(!N) {printf("0");return 0;}
 broi();
 int j,i,t=pr();
 if(t==-1) {printf("%d",br);return 0;}
 if(t==0)
 {for(i=1;i<=N;i++) if(a[i]!=-1) printf("%d ",i);
  return 0;
 }
 b[0]=0;
 for(i=0;i<=N;i++)
  for(j=1;j<=N;j++)
   if(a[j]==i) if ((i>0)&&(b[i]==0)||(b[i]==-1))b[j]=2;
                else b[j]=b[i]+1;
 proc();
 for(i=1;i<=N;i++) if(a[i]==-200) printf("%d ",i);
 return 0;
}




