package test;
import java.io.*;
import java.util.*;
public class Q46p260 {
static ArrayList<Integer> []list;
static BufferedReader buf;
static StringTokenizer st;
static List<Integer> ans;
static int visited[];
private static void BFS(int start) {
Queue<Integer> qu =new LinkedList<Integer>();
qu.add(start);
visited[start]++;
while(!qu.isEmpty()) {
int node=qu.poll();
for(int i:list[node]) {
if(visited[i] == -1) {
visited[i] = visited[node]+1;
qu.add(i);
}
}
}
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
buf =new BufferedReader(new InputStreamReader(System.in));
st =new StringTokenizer(buf.readLine());
int numOfCities = Integer.parseInt(st.nextToken());
int roads =Integer.parseInt(st.nextToken());
int goal = Integer.parseInt(st.nextToken());
int start = Integer.parseInt(st.nextToken());
list = new ArrayList[numOfCities+1];
ans=new ArrayList<Integer>();
for(int i=0; i<list.length;i++) {
list[i]=new ArrayList<Integer>();
}
for(int i=0;i<roads;i++) {
st =new StringTokenizer(buf.readLine());
int x=Integer.parseInt(st.nextToken());
int y =Integer.parseInt(st.nextToken());
list[x].add(y);
}
visited=new int[numOfCities+1];
for(int i=0;i<=numOfCities;i++) {
visited[i]=-1;
}
Arrays.fill(visited, -1);
BFS(start);
for(int i=0; i<=numOfCities; i++) {
if(visited[i] == goal) {
ans.add(i);
}
}
if(ans.size()==0)
System.out.println(-1);
else {
Collections.sort(ans);
for(int temp:ans) {
System.out.println(temp);
}
}
}
}