/*
TASK:TREES
LANG:C++
*/
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n,m,k;
vector<int>a;
vector<int>b;
struct branch
{
  int index;
  int length;
}
c[30000];
bool cmp(branch x,branch y)
{
  return x.length<y.length;
}
using namespace std;
void go(int h)
{
  int t;
  t=a[h];
  if(t==0)
  {
    c[h].length=1;
    c[h].index=h;
  }
  else
  if(c[t].length)
  {
    c[h].length=c[t].length+1;
    c[h].index=h;
  }
  else
    go(t);
}
void mark(int h)
{
  int t;
  t=a[h];
  c[h].length=0;
  mark(t);
}

int main()
{
  int t;
  cin>>n>>m>>k;
  for(int i=0; i<n; i++)
  {
    cin>>t;
    a.push_back(t);
  }
  for(int i=0; i<m; i++)
  {
    cin>>t;
    b.push_back(t);
  }
  for(int i=0; i<n; i++)
  {
    go(i);
  }
  for(int i=0; i<m; i++)
  {
    mark(i);
  }
  sort(c,c+n,cmp);
  int cnt=0;
  for(int i=0; i<n; i++)
  {
   if(c[i].length)
     cnt++;
   else
     break;
  }
  vector<int> res;
  for(int i=0; i<cnt; i++)
  {
    res.push_back(c[i].index);
  }
  sort(res.begin(),res.end());
  if((double)cnt/n>(double)k/100.0)
  {
    int i=0;
    do
    {
      cout<<res[i]<<" ";
      i++;
    }
    while((double)i/n>(double)k/100.0);
    cout<<res[i]<<"\n";
  }
  else
    cout<<cnt<<"\n";
}
