import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    // public static List<List<Integer>> list = new ArrayList<>();
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int s = in.nextInt();
        int t = in.nextInt();
        int[][] arr = new int[m][3];
        for (int i = 0; i < m; i++) {
            arr[i][2] = i + 1; //索引
            arr[i][0] = in.nextInt(); // start
            arr[i][1] = in.nextInt(); //end
        }
        int q = in.nextInt();
        boolean[] used = new boolean[m];
        Arrays.fill(used, false);
        List<List<Integer>> list = new ArrayList<>();
        boolean[] usedN = new boolean[n];
        Arrays.fill(usedN, false);
        usedN[s - 1] = true;
        dfs(new ArrayList<Integer>(), arr, s, t, usedN,used, list);
        Collections.sort (list, (a, b) -> {
            int minLen = Math.min (a.size (), b.size ());
            for (int i = 0; i < minLen; i++) {
                int cmp = a.get (i).compareTo (b.get (i));
                if (cmp != 0) return cmp;
            }
            return Integer.compare (a.size (), b.size ());
        });

        for (int i = 0; i < q; i++) {
            int des = in.nextInt();
            int num = 0;
            List<Integer> ans = new ArrayList<Integer>();
            for (int j = 0; j < list.size(); j++) {
                if (list.get(j).contains(Integer.valueOf(des))) {
                    num++;
                    ans.add(j + 1);
                }
            }
            System.out.print(num + " ");
            for (int j = 0; j < ans.size(); j++) {
                System.out.print(ans.get(j) + " ");
            }
            System.out.println();
        }


    }
    public static void dfs(List<Integer> res, int[][] arr, int start, int end,
                           boolean[] usedN, boolean[] used, List<List<Integer>> list) {
        if (start == end) {
            // Collections.sort(res);
            list.add(new ArrayList<Integer>(res));
            return;
        }
        for (int i = 0; i < arr.length; i++) {
            if (used[i] == false) {
                if (arr[i][0] == start && usedN[arr[i][1]-1]==false) {
                    res.add(arr[i][2]);
                    used[i] = true;
                    usedN[arr[i][1]-1]=true;
                    dfs(res, arr, arr[i][1], end, usedN,used, list);
                    used[i] = false;
                    res.remove(res.size() - 1);
                    usedN[arr[i][1]-1]=false;
                }
                if (arr[i][1] == start && usedN[arr[i][0]-1]==false) {
                    res.add(arr[i][2]);
                    used[i] = true;
                    usedN[arr[i][0]-1]=true;
                    dfs(res, arr, arr[i][0], end, usedN,used, list);
                    used[i] = false;
                    res.remove(res.size() - 1);
                    usedN[arr[i][0]-1]=false;
                }
            }
        }
    }
}