#include <bits/stdc++.h>
using namespace std;
int fir[100001],nex[200001],to[200001];
int n,m,p,q,N,M,ans[100001];
bool vis[100001];
void add(int p,int q)
{
	nex[++M]=fir[p];fir[p]=M;to[M]=q;
	nex[++M]=fir[q];fir[q]=M;to[M]=p;
}
void find(int now)
{
	for(int i=fir[now];i;i=nex[i])
	if(!vis[to[i]])
	{
		ans[++N]=to[i];
		vis[to[i]]=1;
		find(to[i]);
		return;
	}
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
		scanf("%d%d",&p,&q),add(p,q);
	vis[1]=1;ans[N=1]=1;
	find(1);int g=N;find(1);
	printf("%d\n",N);
	for(int i=N;i>g;i--)
		printf("%d ",ans[i]);
	for(int i=1;i<=g;i++)
		printf("%d ",ans[i]);
	return 0;
} 