#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
#include<queue>
using namespace std;
vector<int> v;
int findset(int nude)
{
return (v[nude] == nude) ? nude : v[nude] = findset(v[nude]);
}
void Union(int x, int y)
{
v[findset(x)] = findset(y);
}
int main()
{
int n,x;
cin >> n>>x;
v.resize(n);
for (int i = 0; i < n; i++)
v[i] = i;
while (x--)
{
int a, b;
cin >> a >> b;
a--;
b--;
Union(a, b);
}
for (int i = 0; i < n; i++)
findset(i);
map<int, int> m;
for (int i = 0; i < n; i++)
m[v[i]]++;
int maxi = v[0];
for (auto it : m)
{
if (it.second > m[maxi])
maxi = it.first;
}
vector<int> maxiis;
for (auto it : m)
{
if (it.second == m[maxi])
maxiis.push_back(it.first);
}
sort(maxiis.begin(), maxiis.end());
vector<int> ans;
for (int i = 0; i < n; i++)
if (binary_search(maxiis.begin(), maxiis.end(),v[i]))
ans.push_back(i);
cout << ans.size() << endl;
for (int i = 0; i < ans.size(); i++)
{
if (i != 0)
cout << ' ';
cout << ans[i]+1;
}
cout << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZz4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8cXVldWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdmVjdG9yPGludD4gdjsKIAppbnQgZmluZHNldChpbnQgbnVkZSkKewoJcmV0dXJuICh2W251ZGVdID09IG51ZGUpID8gbnVkZSA6IHZbbnVkZV0gPSBmaW5kc2V0KHZbbnVkZV0pOwp9CiAKdm9pZCBVbmlvbihpbnQgeCwgaW50IHkpCnsKCXZbZmluZHNldCh4KV0gPSBmaW5kc2V0KHkpOwp9CiAKaW50IG1haW4oKQp7CglpbnQgbix4OwoJY2luID4+IG4+Png7Cgl2LnJlc2l6ZShuKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCXZbaV0gPSBpOwoJd2hpbGUgKHgtLSkKCXsKCQlpbnQgYSwgYjsKCQljaW4gPj4gYSA+PiBiOwoJCWEtLTsKCQliLS07CgkJVW5pb24oYSwgYik7Cgl9CiAKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCWZpbmRzZXQoaSk7CiAKCW1hcDxpbnQsIGludD4gbTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCW1bdltpXV0rKzsKIAoJaW50IG1heGkgPSB2WzBdOwoJZm9yIChhdXRvIGl0IDogbSkKCXsKCQlpZiAoaXQuc2Vjb25kID4gbVttYXhpXSkKCQkJbWF4aSA9IGl0LmZpcnN0OwoJfQogCgl2ZWN0b3I8aW50PiBtYXhpaXM7Cglmb3IgKGF1dG8gaXQgOiBtKQoJewoJCWlmIChpdC5zZWNvbmQgPT0gbVttYXhpXSkKCQkJbWF4aWlzLnB1c2hfYmFjayhpdC5maXJzdCk7Cgl9CiAKCXNvcnQobWF4aWlzLmJlZ2luKCksIG1heGlpcy5lbmQoKSk7CiAKCXZlY3RvcjxpbnQ+IGFuczsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCWlmIChiaW5hcnlfc2VhcmNoKG1heGlpcy5iZWdpbigpLCBtYXhpaXMuZW5kKCksdltpXSkpCgkJCWFucy5wdXNoX2JhY2soaSk7CiAKCWNvdXQgPDwgYW5zLnNpemUoKSA8PCBlbmRsOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBhbnMuc2l6ZSgpOyBpKyspCgl7CgkJaWYgKGkgIT0gMCkKCQkJY291dCA8PCAnICc7CgkJY291dCA8PCBhbnNbaV0rMTsKCX0KCWNvdXQgPDwgZW5kbDsKIAogCglyZXR1cm4gMDsKfQ==