// Nemes2.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <algorithm>
#include <climits>
#include <vector>
#include <queue>
#include <unordered_set>
using namespace std;
vector<int> solution;
void DFS(int a, vector<vector<int>>& graph, int cameFrom) {
if (graph[a].size() > 2) return;
for (size_t i = 0; i < graph[a].size(); i++)
{
if (graph[a][i] != cameFrom) {
solution.push_back(graph[a][i]);
DFS(graph[a][i], graph, a);
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int v, e;
cin >> v >> e;
vector<vector<int>> Neighbours(v + 1);
for (size_t i = 0; i < e; i++)
{
int a, b;
cin >> a >> b;
Neighbours[a].push_back(b);
Neighbours[b].push_back(a);
}
vector<int> zf;
for (size_t i = 1; i < Neighbours.size(); i++)
{
if (Neighbours[i].size() == 1) {
zf.push_back(i);
}
}
for (size_t i = 0; i < zf.size(); i++)
{
DFS(zf[i], Neighbours, -1);
}
sort(solution.begin(), solution.end());
vector<int> sol;
if (solution.size() != 0) {
sol.push_back(solution[0]);
for (size_t i = 1; i < solution.size(); i++)
{
if (solution[i] != solution[i - 1]) sol.push_back(solution[i]);
}
}
cout << sol.size() << "\n";
for (size_t i = 0; i < sol.size(); i++)
{
cout << sol[i] << " ";
}
}
// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu
// Tips for Getting Started:
// 1. Use the Solution Explorer window to add/manage files
// 2. Use the Team Explorer window to connect to source control
// 3. Use the Output window to see build output and other messages
// 4. Use the Error List window to view errors
// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file