/*
task:trees
lang:c++
*/
#include<cstdio>
#include<iostream>
#include<queue>
#include<memory>
#define MAXN (1<<10)
using namespace std;

int n,m,bkr,nn;

typedef struct el{
   int to,nxt;
   el(){};
   el(int _to,int _nxt):to(_to),nxt(_nxt){};
};

bool used[MAXN];
int vec[MAXN];
el buf[MAXN];
int A[MAXN],ap=0;
int Z[MAXN],zp=0;

bool forbidden(int n){
     for(int i=0;i<zp;i++)
       if(n==Z[i]) return true;
     return false;
}   

int q[MAXN],qp=0;
void BFS(int first){
   A[ap++]=first;
   used[first]=1;
   q[qp++]=first;       
   int crnt;
   for(int i=0;i<qp;++i){
      crnt=q[i];
      for(int j=vec[crnt];j!=-1;j=buf[j].nxt)
        if(!used[buf[j].to]){
            A[ap++]=buf[j].to;
            used[buf[j].to]=1;
            q[qp++]=buf[j].to;
        }        
   }
}

int l;
void DFS(int a){
     int i;
     used[a]=1;
     for(i=vec[a];i!=-1;i=buf[i].nxt){
       if(!used[buf[i].to])
         DFS(buf[i].to);
       if(buf[i].to==l){
         l=a;
         if(!forbidden(l))
           Z[zp++]=l;
       }
     }
}

int br_kloni_za_rqzane(int procent){
      double tmp=(double)procent/100.0;
      if(tmp*nn>(int)(tmp*nn)) return (int)(tmp*nn)+1;
      return  (int)(tmp*nn);
}  
     
void cutting(int br_k_r){
   int i,br=0,vp=0;
   vector<int> v;
   for(i=ap-1;i>=0;i--)
           if(!forbidden(A[i])){
               v.push_back(A[i]);
               vp++;
               br++;
           }
   if(br_k_r>br) printf("%d\n",br);
   else{ //pe4atam br_k_r na broi no ot max 
      sort(v.begin(),v.end());
      for(int o=vp-br_k_r;o<vp;o++){ printf("%d",v[o]); if(o!=vp-1) printf(" ");}
      printf("\n");
   }
}

int main(){
    int a,b,i,bp=0,mm,kk,tmp;
    scanf("%d%d%d",&nn,&mm,&kk);
    n=nn+1;
    m=n-1;
    memset(used,0,n*sizeof(int));
    memset(vec,-1,n*sizeof(int));
    for(i=0;i<m;i++){
         scanf("%d",&tmp);
         buf[bp]=el(i+1,vec[tmp]);
         vec[tmp]=bp++;             
    }
    for(i=0;i<mm;i++)
      scanf("%d",&Z[zp++]);
    BFS(0);
    memset(used,0,n*sizeof(int));
    for(int p=0;p<zp;p++){
        l=Z[p];     
        DFS(0);
    }
    cutting(br_kloni_za_rqzane(kk));
    return 0;   
}
