#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
vector<int> v[1005];
int y,flag,route[1005],n,ans;
bool vis[1005];
void dfs(int x,int cnt){
if(flag) return ;
route[cnt]=x;
ans=cnt;
vis[x]=1;
if(x==y){
flag=1;
return ;
}
for(int i=0;i<v[x].size();i++){
int nx=v[x][i];
if(!vis[nx]){
dfs(nx,cnt+1);
}
}
}
int main(){
int t;
cin>>t;
while(t--){
int m,x;
cin>>n>>m>>x>>y;
for(int i=1;i<=m;i++){
int u,w;
cin>>u>>w;
v[u].push_back(w);
v[w].push_back(u);
}
for(int i=1;i<=n;i++){
sort(v[i].begin(),v[i].end());
}
dfs(x,1);
for(int i=1;i<=ans;i++){
if(!route[i]) break;
cout<<route[i]<<" ";
v[i].clear();
}
cout<<'\n';
flag=0;
memset(vis,0,sizeof(vis));
memset(route,0,sizeof(route));
}
return 0;
}
不确定是不是做法假了