"""어떤 나라에는 1~N번 까지의 도시와 M개의 단방향 도로가 존재합니다. 모든 도로의 거리는 1이다.
이 때, 특정한 도시 X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히 K인 모든 도시의 번호를 출력하는 프로그램을 작성하라.
또한 출발 도시 X에서 출발 도시 X로 가는 최단 거리는 항상 0이라고 가정한다.
예를 들어 N = 4, K = 2, X = 1 일 때, 다음과 같이

    1 -> 2
    1 -> 3
    2 -> 3
    2 -> 4 의 그래프가 있을 떄, 1번 도시에서 출발하여 도달할 수 있는 도시 중에서, 최단거리가 2인 도시는 4번도시 뿐이다. 2,3번 도시의 경우, 최단거리가 1이기 때문에 출력하지 않는다."""

# 첫 째 줄에  도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발도시의 번호 X가 주어진다.
# 둘 째 줄부터 M개의 줄에 걸쳐 두개의 자연수 A, B가 주어지며, 공백으로 구분한다. 이는 A번 도시에서 B번 도시로 이동하는 단방향 도로가 존재한다는 의미 ( 1<= A, B <= N) 단, A,B는 서로 다른 자연수
# 출력 - X로부터 출발하여 도달할 수 있는 도시 중에서, 최단 거리가 K인 모든 도시의 번호를 한 줄에 하나씩 오름차순으로 출력합니다.
# 이 때 도달할 수 있는 도시 중에서, 최단거리가 K인 도시가 하나도 존재하지 않으면, -1을 출력한다.
from collections import deque

n, m, k, x = map(int, input().split())
graph = [[] for _ in range(n+1)]

distance = [-1]*(n+1)
for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)


q = deque()
q.append(x)

distance[x] = 0

while q:
    now = q.popleft()
    if distance[now] == k:
        q.appendleft(now)
        for i in q:
            if distance[i] == k:
                print(i)
            else:
                quit()
        quit()

    for i in graph[now]:
        if distance[i] == -1:
            q.append(i)
            distance[i] = distance[now] + 1

print(-1)


# 처음에 최단 거리를 구하는 것이기 때문에 다익스트라를 생각할 수 있으나, 노드 수와 경로수의 범위가 굉장히 크기 때문에, 다익스트라는 시간 초과될  가능성이 크다.
# 또한 "모든 도로의 거리가  1"이라는 조건 덕분에 너비 우선 탐색을 이용하여 해결할 수 있는  것
# BFS로 딱 K거리 까지만 연산하고 그만두도록 코드를 작성하는 것이 좋다.