#include <bits/stdc++.h>
using namespace std;
vector<int> adj[100005];
bitset<100005> vis;
vector<int> ans;

void dfs(int v1) {
	vis[v1]=true;
	ans.push_back(v1);
	for (int i=0; i<adj[v1].size(); i++) {
		if (!vis[adj[v1][i]]) {
			dfs(adj[v1][i]);
			break;
		}
	}
}

int main() {
	int n,m;
	scanf("%d%d", &n, &m);
	for (int i=0; i<m; i++) {
		int a,b;
		scanf("%d%d", &a, &b);
		a--; b--;
		adj[a].push_back(b);
		adj[b].push_back(a);
	}
	dfs(0);
	reverse(ans.begin(),ans.end());
	for (int i=0; i<adj[0].size(); i++) {
		if (!vis[adj[0][i]]) {
			dfs(adj[0][i]);
			break;
		}
	}
	printf("%d\n", ans.size());
	for (int i=0; i<ans.size(); i++) {
		printf("%d%c", ans[i]+1, i==ans.size()-1 ? '\n' : ' ');
	}
}
