/*
TASK:trees
LANG:C++
*/
#include<stdio.h>
#include<algorithm>
#include<stack>
using namespace std;
typedef struct leaf
{
 int predi;
 int num;
 int flag; 
};
bool cmp(leaf a1,leaf a2);
int main()
{
 int f,tmp,i,N,n,m,k,r;
 double procent,max;
 stack<int>otg;
 leaf kloni[30002];
 scanf("%d%d%d",&n,&m,&k);
 N=n;
 for(i=1;i<=n;i++)
 {
  scanf("%d",&kloni[i].predi);
  kloni[i].num=i;
 }
 for(i=0;i<m;i++)
 { 
  scanf("%d",&tmp);
  kloni[tmp].flag=1;N--;
  for(i=kloni[tmp].predi;i;)
  {
   kloni[i].flag=1;N--;     
   i=kloni[i].predi;     
  }
 }
 if(N==n){printf("0\n");return 0;}
 for(i=1,f=1;i<=N;i++)
 { 
  procent=(double)i/n;
  procent*=100;
  if(procent>=(double)k){r=i;f=0;break;}
 }
 if(f)r=i-1;
 sort(kloni+1,kloni+n+1,cmp);
 if(r<N)N=r;
 else {printf("%d",N);return 0;}
 for(i=1;i<=N;i++)
  otg.push(kloni[i].num);
 while(!otg.empty())
 {
  printf("%d ",otg.top());
  otg.pop();
 }
 printf("\n");
 return 0;
}
bool cmp(leaf a1,leaf a2)
{
 if(a1.num>a2.num&&!a1.flag)return true;
 else if(a1.num>a2.num&&!a2.flag)return false;    
}
