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

#include<cstdio>
#include<iostream>
int M,N,K,zotr,maxcut;
int pred[30002];
int zlat[30002];
char ncut[30002];

void input() {
    scanf("%d%d%d",&N,&M,&K);
    for(int i=1;i<=N;i++) scanf("%d",&pred[i]);
    for(int i=0;i<M;i++) scanf("%d",&zlat[i]);
    double z=N*K/100.;
    if (z-int(z)!=0)zotr=int(z)+1;else zotr=int(z);
    maxcut=N;
}

void cut() {
    for(int i=0;i<M;i++) {
        int tek=zlat[i];
        while(tek!=0) {
            if(ncut[tek]==0) {maxcut--;ncut[tek]=1;}
            tek=pred[tek];
        }
    }
}
            
void solve() {
    if(zotr>maxcut) printf("%d\n", maxcut);
    else{
        int tocut[30002],indtc=0;
        int ind=N;
        for(int i=0;i<zotr;i++) {
            while (ncut[ind]) ind--;
            tocut[indtc++]=ind--; 
        }
        for(int i=0;i<indtc-1;i++) printf("%d ", tocut[indtc-i-1]); 
        if(K>0) printf("%d\n", tocut[0]); else printf("\n");
    }
}
int main() {
    input();
    cut();
    solve();
    return 0;
}
