

const fs = require('fs');
let input = fs.readFileSync("/dev/stdin").toString().trim();
input = input.split('\n');
const [N, M, K, X] = input.shift().split(' ').map((el) => +el)
graph = Array.from({ length: N + 1 }, () => new Array)
for (let i = 0; i < M; i++) {
let [A, B] = input[i].split(' ').map((el) => +el)
graph[A].push(B);
}
// N: 도시 개수, M: 도로 개수, K: 거리 정보, X: 출발 도시 번호
// 각 도시별 최단 거리 배열필요
const solution = (K, X) => {
// 여기서는 각 도시별 최단 거리 배열을 찾고, 정렬해서 콘솔까지 출력해주기.
let queue = [[X, 0]]
let visited = new Array(N + 1).fill(false);
visited[X]=true;
let answerPart = [];
while (queue.length > 0) {
let [current, count] = queue.shift();
let next = graph[current];
for (let i = 0; i < next.length; i++) {
if (visited[next[i]] === false) {
if (count + 1 === K) {
answerPart.push(next[i]);
} else {
queue.push([next[i], count + 1])
}
visited[next[i] ] = true;
continue;
}
}
}
if (answerPart.length) {
console.log(answerPart.sort((a, b) => a - b).join('\n'))
} else {
console.log(-1)
}
}
solution(K, X)