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

#include <cmath>
#include <vector>
#include <iostream>

using namespace std;

#define _MAX_N 30001

int N;
int M;
int K;
int trees;
int count;
bool b[_MAX_N];
vector<int> a[_MAX_N];

void init()
{
	int v;
	cin >> N;
	cin >> M;
	cin >> K;
	for (int i = 1; i <= N; i++)
	{
		cin >> v;
		a[v].push_back(i);
	}
	for (int i = 0; i < N; i++)
	{
		cin >> v;
		b[v] = true;
	}
}

void traverse(int v)
{
	for (int i = 0; i < a[v].size(); i++)
		traverse(a[v][i]);
	for (int i = 0; i < a[v].size(); i++)
		if (b[a[v][i]])
			b[v] = true;
}

void solve()
{
	float temp = ((float)(N * K) / 100) - round((float)(N * K) / 100);
	if (temp > 0)
		trees = (int)round((N * K) / 100) + 1;
	else
		trees = (int)round((N * K) / 100);
	traverse(0);
	vector<int> r;
	for (int i = N; i >= 1; i--)
		if (!b[i])
			r.push_back(i);
	if (r.size() >= trees)
		for (int i = trees - 1; i >= 0; i--)
			cout << r[i] << ' ';
	else
		cout << r.size();
	cout << endl;
}

int main(void)
{
	init();
	solve();
	
    return 0;
}
