/*
TASK:trees
LANG:C++
*/
#include <iostream>

using namespace std;

long int m,n,br;
int k,temp;
long int kloni[30002][3];
long int gnezda[30000];
long int otrqzani[30002];
int otdalech;
int maxotdalech;
long int oops,kk;

int main()
{
    long int i,j;
    long int co=0;
    long int klonizarqzane;
    cin>>n>>m>>k;
    for(i=1;i<n+1;i++)
    {
        cin>>kloni[i][0];
        kloni[i][1]=1;
    }
    for(i=0;i<m;i++)
    {
        cin>>gnezda[i];
        kloni[i][1]=0;
    }
    for(i=0;i<m;i++)
    {
        br=gnezda[i];
        while(br!=0)
        {
            kloni[br][1]=0;
            br=kloni[br][0];
        }
    }
    klonizarqzane=int((n*k)/100)+1;
    
    for(i=n;i>0;i--)
    {
        otdalech=0;
        br=kloni[i][0];
        while(br!=0)
        {
            otdalech++;
            br=kloni[br][0];
        }
        kloni[i][2]=otdalech;
    }
    
    maxotdalech=0;
    for(i=1;i<n+1;i++)
    if (kloni[i][2]>maxotdalech) maxotdalech=kloni[i][2];
    
    kk=1;
    while((kk>0)&&(klonizarqzane>0))
    {
        for(i=n;i>0;i--)
        {
            if((kloni[i][1]==1)&&(kloni[i][2]=maxotdalech))
            {
                otrqzani[co]=i;
                co++;
                kloni[i][1]=0;
                klonizarqzane--;
                if(klonizarqzane==0) break;
            }
        }
            oops=0;
            kk=0;
            for(j=1;j<n+1;j++) 
            {
                if((kloni[i][1]==1)&&(kloni[j][2]==maxotdalech)) oops++;
                if(kloni[j][1]==1) kk++;
            }
            if(oops==0) maxotdalech--;
    }
    
    if(klonizarqzane==0)
    {
        for(i=0;i<co;i++)
        for(j=0;j<co;j++)
        if(otrqzani[i]<otrqzani[j])
        {
            temp=otrqzani[i];
            otrqzani[i]=otrqzani[j];
            otrqzani[j]=temp;
        }
        for(i=0;i<co;i++)
        {
            cout<<otrqzani[i];
            if(i!=co-1) cout<<" ";
        }
    }
    else cout<<co;
    cout<<"\n";
    return 0;
}
