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

using namespace std;

int N,M,K;

int prnt[30000];
int bird[30000];
int cut [30000];
int ct [30000] = {0};
char prot[30000] = {0};
int leaf [30000];
int pn = 0;
int l = 0;

int main ()
{
 int p, i;
 cin >> N >> M >> K;
 for (i = 0; i < N; i++)
     cin >> prnt[i];
 for (i = 0; i < M; i++)
     cin >> bird[i];
 for (i = 0; i < M; i++)
 {
     p = bird[i]-1;
     while (p != -1)
     {
           prot[p] = 1;
           p = prnt[p] - 1;
           pn++;
     }
 }
 K = (int)ceil((double)(K)/100 * N);
 if (pn > (N-K)) 
 {
    cout << N-pn << '\n';
    return 0;
 }
 int j;
 for (i = N-1; i >= 0; i--)
 {
     for (j = 0; j < N; j++)
         if (prnt [j] - 1 == i) break;
     if (j == N) leaf [l++] = i;
 }

 int c = 0;
 for (i = N-1; i >= -1; i--)
     for (j = 0; j < l; j++)
          if (i == prnt[leaf[j]] - 1 && !prot[leaf[j]])
          {
                cut[c++] = leaf[j] + 1;
                leaf[j] = i;
          }
 for (i = K-1; i >= 0; i--)
     for (j = 0; j < i; j++)
         if (cut[j] > cut[j+1])
         {
              p = cut[j];
              cut[j] = cut[j+1];
              cut[j+1] = p;
         }
 for (i = 0; i < K - 1; i++)
     cout << cut[i] << ' ';
 cout << cut[K - 1] << '\n';
 return 0;
}
