#include<bits/stdc++.h>
using namespace std;
void shortestPath(vector<int> adj[],int v,int s)
{
queue<int> q;
q.push(s);
int distance[v];
int path[v];
for(int i=0;i<v;i++)
distance[i]=-1;
distance[s]=0;
while(!q.empty())
{
int temp = q.front();
cout<<temp<<" ";
q.pop();
vector<int>::iterator itr;
for(itr = adj[temp].begin();itr!=adj[temp].end();itr++)
{
if(distance[*itr]==-1)
{
distance[*itr] = distance[temp]+1;
path[*itr] = temp;
q.push(*itr);
}
}
}
}
int main()
{
int v,e,s;
cin>>v>>e>>s;
vector<int> adj[v];
for(int i=0;i<e;i++)
{
int x,y;
cin>>x>>y;
adj[x].push_back(y);
}
shortestPath(adj,v,s);
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgc2hvcnRlc3RQYXRoKHZlY3RvcjxpbnQ+IGFkaltdLGludCB2LGludCBzKQp7CglxdWV1ZTxpbnQ+IHE7CglxLnB1c2gocyk7CglpbnQgZGlzdGFuY2Vbdl07CglpbnQgcGF0aFt2XTsKCWZvcihpbnQgaT0wO2k8djtpKyspCgkJZGlzdGFuY2VbaV09LTE7CglkaXN0YW5jZVtzXT0wOwoJd2hpbGUoIXEuZW1wdHkoKSkKCXsKCQlpbnQgdGVtcCA9IHEuZnJvbnQoKTsKCQljb3V0PDx0ZW1wPDwiICI7CgkJcS5wb3AoKTsKCQl2ZWN0b3I8aW50Pjo6aXRlcmF0b3IgaXRyOwoJCWZvcihpdHIgPSBhZGpbdGVtcF0uYmVnaW4oKTtpdHIhPWFkalt0ZW1wXS5lbmQoKTtpdHIrKykKCQl7CgkJCWlmKGRpc3RhbmNlWyppdHJdPT0tMSkKCQkJewoJCQkJZGlzdGFuY2VbKml0cl0gPSBkaXN0YW5jZVt0ZW1wXSsxOwoJCQkJcGF0aFsqaXRyXSA9IHRlbXA7CgkJCQlxLnB1c2goKml0cik7CgkJCX0KCQl9Cgl9Cgp9CgppbnQgbWFpbigpCnsKCWludCB2LGUsczsKCWNpbj4+dj4+ZT4+czsKCXZlY3RvcjxpbnQ+IGFkalt2XTsKCWZvcihpbnQgaT0wO2k8ZTtpKyspCgl7CgkJaW50IHgseTsKCQljaW4+Png+Pnk7CgkJYWRqW3hdLnB1c2hfYmFjayh5KTsKCX0KCXNob3J0ZXN0UGF0aChhZGosdixzKTsKfQ==