#include<iostream>
#include<queue>
using namespace std;
int d,n,m,z;
vector <pair<int,int> > Graf[25005];
priority_queue < pair<int,int> ,vector < pair<int,int> >,greater < pair<int,int> > > Qp;
bool odw[25005];
void BFS(int v)
{
queue <int> Q;
odw[v] = true;
Q.push(v);
while(!Q.empty() || !Qp.empty())
{
while(!Q.empty())
{
int w = Q.front(),s = Graf[w].size();
cout<<w<<" "; Q.pop();
for(int i = 0;i < s; ++i)
{
int u = Graf[w][i].second,k = Graf[w][i].first;
if(!odw[u])
{
Qp.push(make_pair(k,u));
odw[u] = true;
}
}
}
while(!Qp.empty())
{
int t = Qp.top().second;
Q.push(t);
Qp.pop();
}
}
cout<<'\n';
}
void czysc(int N)
{
for(int i = 1;i <= N; ++i)
{
Graf[i].clear();
odw[i] = false;
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cin>>d;
for(int i = 0;i < d; ++i)
{
cin>>n>>m>>z;
for(int j = 0;j < m; ++j)
{
int a,b;
cin>>a>>b;
Graf[a].push_back(make_pair(j,b));
}
BFS(z);
czysc(n);
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHF1ZXVlPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBkLG4sbSx6OwoKdmVjdG9yIDxwYWlyPGludCxpbnQ+ID4gR3JhZlsyNTAwNV07Cgpwcmlvcml0eV9xdWV1ZSA8IHBhaXI8aW50LGludD4gLHZlY3RvciA8IHBhaXI8aW50LGludD4gPixncmVhdGVyIDwgcGFpcjxpbnQsaW50PiA+ID4gUXA7Cgpib29sIG9kd1syNTAwNV07Cgp2b2lkIEJGUyhpbnQgdikKewogICAgcXVldWUgPGludD4gUTsKICAgIG9kd1t2XSA9IHRydWU7CiAgICBRLnB1c2godik7CiAgICB3aGlsZSghUS5lbXB0eSgpIHx8ICFRcC5lbXB0eSgpKQogICAgewogICAgICAgIHdoaWxlKCFRLmVtcHR5KCkpCiAgICAgICAgewogICAgICAgICAgICBpbnQgdyA9IFEuZnJvbnQoKSxzID0gR3JhZlt3XS5zaXplKCk7CiAgICAgICAgICAgIGNvdXQ8PHc8PCIgIjsgUS5wb3AoKTsKICAgICAgICAgICAgZm9yKGludCBpID0gMDtpIDwgczsgKytpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbnQgdSA9IEdyYWZbd11baV0uc2Vjb25kLGsgPSBHcmFmW3ddW2ldLmZpcnN0OwogICAgICAgICAgICAgICAgaWYoIW9kd1t1XSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBRcC5wdXNoKG1ha2VfcGFpcihrLHUpKTsKICAgICAgICAgICAgICAgICAgICBvZHdbdV0gPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHdoaWxlKCFRcC5lbXB0eSgpKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHQgPSBRcC50b3AoKS5zZWNvbmQ7CiAgICAgICAgICAgIFEucHVzaCh0KTsKICAgICAgICAgICAgUXAucG9wKCk7CiAgICAgICAgfQogICAgfQogICAgY291dDw8J1xuJzsKfQoKdm9pZCBjenlzYyhpbnQgTikKewogICAgZm9yKGludCBpID0gMTtpIDw9IE47ICsraSkKICAgIHsKICAgICAgICBHcmFmW2ldLmNsZWFyKCk7CiAgICAgICAgb2R3W2ldID0gZmFsc2U7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoTlVMTCk7CgogICAgY2luPj5kOwogICAgZm9yKGludCBpID0gMDtpIDwgZDsgKytpKQogICAgewogICAgICAgIGNpbj4+bj4+bT4+ejsKICAgICAgICBmb3IoaW50IGogPSAwO2ogPCBtOyArK2opCiAgICAgICAgewogICAgICAgICAgICBpbnQgYSxiOwogICAgICAgICAgICBjaW4+PmE+PmI7CiAgICAgICAgICAgIEdyYWZbYV0ucHVzaF9iYWNrKG1ha2VfcGFpcihqLGIpKTsKICAgICAgICB9CiAgICAgICAgQkZTKHopOwogICAgICAgIGN6eXNjKG4pOwogICAgfQogICAgcmV0dXJuIDA7Cn0=