#include
#include
#include
#include
using namespace std;
const int MAXN = 1010;
vector<int> adj[MAXN];
bool inq[MAXN] = {false};
int N = 0, L = 0;
int follow_num;
int master_idx;
int user_cnt = 0;
void __bfs(int x){
user_cnt = 0;
queue<int> q;
q.push(x);
inq[x] = true;
int lay = 0;
while(!q.empty()){
int lay_len = q.size();
while(lay_len --){
int tmp = q.front();
q.pop();
for(int i = 0; i < adj[tmp].size(); i++){
int ind_flw = adj[tmp][i];
if(!inq[ind_flw]){
inq[ind_flw] = true;
q.push(ind_flw);
user_cnt ++;
}
}
}
lay ++;
if(lay == L){
break;
}
}
}
vector<int> sender;
int cnt = 0;
void bfs_for_map(){
for(int i = 0; i < sender.size(); i++){
__bfs(sender[i]);
fill(inq, inq + N + 1, false);
printf("%d", user_cnt);
if(i != sender.size() - 1){
printf("
");
}
}
}
int main(){
scanf("%d %d", &N, &L);
for(int i = 1; i <= N; i++){
scanf("%d", &follow_num);
while(follow_num --){
scanf("%d", &master_idx);
adj[master_idx].push_back(i);
}
}
int T;
scanf("%d", &T);
while(T--){
scanf("%d", &master_idx);
sender.push_back(master_idx);
}
bfs_for_map();
return 0;
}