#include<bits/stdc++.h>
#define MAX 300001
#define INF 1e9
using namespace std;
vector<int>adj[MAX];
vector<int>city;
int dis[MAX], k;
void dij(int i){
fill(dis, dis+MAX, INF);
queue<int>q;
q.push(i);
dis[i]=0;
while(!q.empty()){
int x=q.front();
q.pop();
for(int i=0;i<adj[x].size();i++){
int nx=adj[x][i];
if(dis[nx]>dis[x]+1){
dis[nx]=dis[x]+1;
q.push(nx);
}
}
}
}
int main(){
ios_base::sync_with_stdio(NULL);
cin.tie(0),cout.tie(0);
int n,m,x,a,b,cnt=0;
cin>>n>>m>>k>>x;
while(m--){
cin>>a>>b;
adj[a].push_back(b);
}
dij(x);
for(int i=1;i<=n;i++){
if(dis[i]==k)
city.push_back(i);
}
sort(city.begin(), city.end());
if(city.empty())
cout<<-1;
else
for(int i : city){
cout<<i<<'\n';
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBNQVggMzAwMDAxCiNkZWZpbmUgSU5GIDFlOQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZlY3RvcjxpbnQ+YWRqW01BWF07CnZlY3RvcjxpbnQ+Y2l0eTsKaW50IGRpc1tNQVhdLCBrOwoKdm9pZCBkaWooaW50IGkpewoJZmlsbChkaXMsIGRpcytNQVgsIElORik7CglxdWV1ZTxpbnQ+cTsKCXEucHVzaChpKTsKCWRpc1tpXT0wOwoJCgl3aGlsZSghcS5lbXB0eSgpKXsKCQlpbnQgeD1xLmZyb250KCk7CgkJcS5wb3AoKTsKCQkKCQlmb3IoaW50IGk9MDtpPGFkalt4XS5zaXplKCk7aSsrKXsKCQkJaW50IG54PWFkalt4XVtpXTsKCQkJaWYoZGlzW254XT5kaXNbeF0rMSl7CgkJCQlkaXNbbnhdPWRpc1t4XSsxOwoJCQkJcS5wdXNoKG54KTsKCQkJfQoJCX0KCX0KfQoKaW50IG1haW4oKXsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oTlVMTCk7CgljaW4udGllKDApLGNvdXQudGllKDApOwoJCglpbnQgbixtLHgsYSxiLGNudD0wOwoJCgljaW4+Pm4+Pm0+Pms+Png7CgkKCXdoaWxlKG0tLSl7CgkJY2luPj5hPj5iOwoJCQoJCWFkalthXS5wdXNoX2JhY2soYik7Cgl9CgkKCWRpaih4KTsKCQoJZm9yKGludCBpPTE7aTw9bjtpKyspewoJCWlmKGRpc1tpXT09aykKCQkJY2l0eS5wdXNoX2JhY2soaSk7Cgl9CgkKCXNvcnQoY2l0eS5iZWdpbigpLCBjaXR5LmVuZCgpKTsKCQoJaWYoY2l0eS5lbXB0eSgpKQoJCWNvdXQ8PC0xOwoJZWxzZQoJCWZvcihpbnQgaSA6IGNpdHkpewoJCQljb3V0PDxpPDwnXG4nOwoJCX0KCQoJcmV0dXJuIDA7Cn0=