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]);
        }


    }
}