/*
TASK:trees
LANG:C++
*/
#include<iostream>
#include<cmath>
#include<stack>
using namespace std;

const int NO=-1;

int tree[30001];
int nest[30001];
int N,M,K;

void init(){
     cin>>N>>M>>K;
     for(int i=1;i<=N;i++)
             cin>>tree[i];
     for(int i=1;i<=M;i++)
             cin>>nest[i];
     }
     
int main(){
    init();
    //cin>>N>>K;
    double b=(double)(K/100.0);
    b=N*b;
    b=b+1.0;
    int a=(int)(floor(b));
    for(int i=1;i<=M;i++){
            int x=nest[i];
            //cout<<x<<" ";
            do{
                int k=tree[x];
                tree[x]=NO;
                x=k;
                //cout<<x<<" ";
            }while(x!=0);
            }
    int num=0;
    int lucky[30001];
    for(int i=1;i<=N;i++)
            if(tree[i]!=NO) {num++;lucky[num]=i;/*cout<<lucky[num]<<" ";*/}
    if(a>num) {cout<<num<<endl;/*system("pause")*/;return 0;}
    stack <int> r;
    for(int i=1;i<=a;i++){
            int max=lucky[1];int k=1;
            for(int j=2;j<=num;j++)
                    if(lucky[j]>max) {  max=lucky[j];k=j;}
            r.push(max);
            lucky[k]=lucky[num];
            num--;
            }
           // cout<<endl;
    while(r.size()!=0){cout<<r.top()<<" ";r.pop();}
    cout<<endl;
    //system("pause");
    return 0;
}
