// { Driver Code Starts
#include<bits/stdc++.h>
using namespace std;
// } Driver Code Ends
class Solution
{
public:
//Function to return a list containing the DFS traversal of the graph.
vector<int>dfsOfGraph(int V, vector<int> adj[])
{
vector<int> res;
bool to_visit[V];
for(int i=0;i<V;i++){
to_visit[i]=true;
}
stack<int> stack1,stack2;
stack1.push(0);
to_visit[0]=false;
while(!(stack1.empty())){
int x=stack1.top();
res.push_back(x);
stack1.pop();
for(auto iter:adj[x]){
if(to_visit[iter]){
stack2.push(iter);
to_visit[iter]=false;
}
while(!stack2.empty()){
x=stack2.top();
stack1.push(x);
stack2.pop();
}
}
}
return res;
}
};
// { Driver Code Starts.
int main(){
int tc;
cin >> tc;
while(tc--){
int V, E;
cin >> V >> E;
vector<int> adj[V];
for(int i = 0; i < E; i++)
{
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
// string s1;
// cin>>s1;
Solution obj;
vector<int>ans=obj.dfsOfGraph(V, adj);
for(int i=0;i<ans.size();i++){
cout<<ans[i]<<" ";
}
cout<<endl;
}
return 0;
} // } Driver Code Ends
Ly8geyBEcml2ZXIgQ29kZSBTdGFydHMKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiAvLyB9IERyaXZlciBDb2RlIEVuZHMKCgpjbGFzcyBTb2x1dGlvbiAKewogICAgcHVibGljOgoJLy9GdW5jdGlvbiB0byByZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIERGUyB0cmF2ZXJzYWwgb2YgdGhlIGdyYXBoLgoJdmVjdG9yPGludD5kZnNPZkdyYXBoKGludCBWLCB2ZWN0b3I8aW50PiBhZGpbXSkKCXsKCSAgICB2ZWN0b3I8aW50PiByZXM7CgkgICAgYm9vbCB0b192aXNpdFtWXTsKCSAgICBmb3IoaW50IGk9MDtpPFY7aSsrKXsKCSAgICAgICAgdG9fdmlzaXRbaV09dHJ1ZTsKCSAgICB9CgkgICAgc3RhY2s8aW50PiBzdGFjazEsc3RhY2syOwoJICAgIHN0YWNrMS5wdXNoKDApOwoJICAgIHRvX3Zpc2l0WzBdPWZhbHNlOwoJICAgIHdoaWxlKCEoc3RhY2sxLmVtcHR5KCkpKXsKCSAgICAgICAgaW50IHg9c3RhY2sxLnRvcCgpOwoJICAgICAgICByZXMucHVzaF9iYWNrKHgpOwoJICAgICAgICBzdGFjazEucG9wKCk7CgkgICAgICAgIGZvcihhdXRvIGl0ZXI6YWRqW3hdKXsKCSAgICAgICAgICAgIGlmKHRvX3Zpc2l0W2l0ZXJdKXsKCSAgICAgICAgICAgICAgICBzdGFjazIucHVzaChpdGVyKTsKCSAgICAgICAgICAgICAgICB0b192aXNpdFtpdGVyXT1mYWxzZTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHdoaWxlKCFzdGFjazIuZW1wdHkoKSl7CgkgICAgICAgICAgICAgICAgeD1zdGFjazIudG9wKCk7CgkgICAgICAgICAgICAgICAgc3RhY2sxLnB1c2goeCk7CgkgICAgICAgICAgICAgICAgc3RhY2syLnBvcCgpOwoJICAgICAgICAgICAgfQoJICAgICAgICB9CgkgICAgfQoJICAgIHJldHVybiByZXM7Cgl9Cn07CgovLyB7IERyaXZlciBDb2RlIFN0YXJ0cy4KaW50IG1haW4oKXsKCWludCB0YzsKCWNpbiA+PiB0YzsKCXdoaWxlKHRjLS0pewoJCWludCBWLCBFOwogICAgCWNpbiA+PiBWID4+IEU7CgogICAgCXZlY3RvcjxpbnQ+IGFkaltWXTsKCiAgICAJZm9yKGludCBpID0gMDsgaSA8IEU7IGkrKykKICAgIAl7CiAgICAJCWludCB1LCB2OwogICAgCQljaW4gPj4gdSA+PiB2OwogICAgCQlhZGpbdV0ucHVzaF9iYWNrKHYpOwogICAgCQlhZGpbdl0ucHVzaF9iYWNrKHUpOwogICAgCX0KICAgICAgICAvLyBzdHJpbmcgczE7CiAgICAgICAgLy8gY2luPj5zMTsKICAgICAgICBTb2x1dGlvbiBvYmo7CiAgICAgICAgdmVjdG9yPGludD5hbnM9b2JqLmRmc09mR3JhcGgoViwgYWRqKTsKICAgICAgICBmb3IoaW50IGk9MDtpPGFucy5zaXplKCk7aSsrKXsKICAgICAgICAJY291dDw8YW5zW2ldPDwiICI7CiAgICAgICAgfQogICAgICAgIGNvdXQ8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfSAgLy8gfSBEcml2ZXIgQ29kZSBFbmRz