#include <bits/stdc++.h>
using namespace std;
void dfs(int node, vector<int> Graph[], vector<int>& vis, vector<int>& parent) {
cout << node << endl;
vis[node] = 1;
for(auto u : Graph[node]) { // iterating all children "u" of "node"
if(vis[u] == 0) {
// if this node/branch has never been visited before
// just go into it and search it using dfs in recursion
parent[u] = node;
dfs(u, Graph, vis, parent);
}
}
}
int main() {
int n;
cin >> n;
int m;
cin >> m;
vector<int> Graph[n+5];
for(int i=0; i<m; i++) {
int x, y;
cin >> x >> y;
Graph[x].push_back(y);
Graph[y].push_back(x);
}
vector<int> vis(n+5, 0);
vector<int> parent(n+5, 0);
dfs(1, Graph, vis, parent); // starts from source node
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGRmcyhpbnQgbm9kZSwgdmVjdG9yPGludD4gR3JhcGhbXSwgdmVjdG9yPGludD4mIHZpcywgdmVjdG9yPGludD4mIHBhcmVudCkgewoJY291dCA8PCBub2RlIDw8IGVuZGw7CgkKCXZpc1tub2RlXSA9IDE7CgkKCWZvcihhdXRvIHUgOiBHcmFwaFtub2RlXSkgeyAvLyBpdGVyYXRpbmcgYWxsIGNoaWxkcmVuICJ1IiBvZiAibm9kZSIKCQlpZih2aXNbdV0gPT0gMCkgewoJCQkvLyBpZiB0aGlzIG5vZGUvYnJhbmNoIGhhcyBuZXZlciBiZWVuIHZpc2l0ZWQgYmVmb3JlCgkJCS8vIGp1c3QgZ28gaW50byBpdCBhbmQgc2VhcmNoIGl0IHVzaW5nIGRmcyBpbiByZWN1cnNpb24KCQkJcGFyZW50W3VdID0gbm9kZTsKCQkJZGZzKHUsIEdyYXBoLCB2aXMsIHBhcmVudCk7CgkJfQoJfQp9CgppbnQgbWFpbigpIHsKCWludCBuOwoJY2luID4+IG47CiAKCWludCBtOwoJY2luID4+IG07CiAKCXZlY3RvcjxpbnQ+IEdyYXBoW24rNV07CiAKCWZvcihpbnQgaT0wOyBpPG07IGkrKykgewoJCWludCB4LCB5OwogCgkJY2luID4+IHggPj4geTsKIAoJCUdyYXBoW3hdLnB1c2hfYmFjayh5KTsKCQlHcmFwaFt5XS5wdXNoX2JhY2soeCk7Cgl9CiAKCXZlY3RvcjxpbnQ+IHZpcyhuKzUsIDApOwoJdmVjdG9yPGludD4gcGFyZW50KG4rNSwgMCk7CgkKCWRmcygxLCBHcmFwaCwgdmlzLCBwYXJlbnQpOyAvLyBzdGFydHMgZnJvbSBzb3VyY2Ugbm9kZQoJcmV0dXJuIDA7Cn0=