(1회차 시도 성공!)
import java.io.*;
import java.util.*;
public class Main {
static List<Integer>[] lists;
static boolean[] visited;
static List<Integer> ans;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int x = Integer.parseInt(st.nextToken());
lists = new ArrayList[n+1];
for (int i = 0; i < n + 1; i++) {
lists[i] = new ArrayList<>();
}
visited = new boolean[n+1];
ans = new ArrayList<>();
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
lists[a].add(b);
}
bfs(x,k);
if(ans.isEmpty()){
bw.write("-1");
}else{
Collections.sort(ans);
for (Integer an : ans) {
bw.write(an+"\n");
}
}
br.close();
bw.close();
}
private static void bfs(int x, int k) {
Queue<int[]> q = new LinkedList<>();
visited[x] = true;
q.add(new int[]{x, 0});
while(!q.isEmpty()) {
int[] tmp = q.poll();
if(tmp[1] == k){
ans.add(tmp[0]);
}
for (Integer i : lists[tmp[0]]) {
if(!visited[i]){
visited[i] = true;
q.add(new int[]{i, tmp[1] + 1});
}
}
}
}
}