import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int t = in.nextInt() - 1;
Set<Integer>[] graph = new HashSet[n];
for (int i = 0; i < n; i++) {
graph[i] = new HashSet<>();
}
int[] indegree = new int[n];
for (int i = 0; i < m; i++) {
int from = in.nextInt() - 1;
int to = in.nextInt() - 1;
graph[from].add(to);
indegree[to]++;
}
Queue<Integer> q = new LinkedList<>();
for (int i = 0; i < n; i++) {
if (indegree[i] == 0) {
q.offer(i);
}
}
int[] res = new int[n];
int count = 0;
while (!q.isEmpty()) {
int temp = q.poll();
res[count++] = temp;
for (int x : graph[temp]) {
indegree[x]--;
if (indegree[x] == 0) {
q.offer(x);
}
}
}
int[] dp = new int[n];
dp[t] = 1;
for (int i = n - 1; i >= 0; i--) {
int v = res[i];
for (int j : graph[v]) {
dp[v] = (dp[v] + dp[j])%100007;
}
}
int qq = in.nextInt();
for (int i = 0; i < qq; i++) {
int start = in.nextInt() - 1;
System.out.println(dp[start]);
}
}
}