#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

const int N=100005;

struct E{
	int to,next;
}mem[N<<1];
int n,x,y,m,num,h,t,tag;
int head[N],q[N<<2];
bool vis[N];

void add(int x,int y){
	num++;
	mem[num].to=y; mem[num].next=head[x];
	head[x]=num;
}

int main(){
	int i,j,u;
	scanf("%d%d",&n,&m);
	for (i=1;i<=m;i++){
		scanf("%d%d",&x,&y);
		add(x,y); add(y,x);
	}
	h=t=100000; q[h]=1; vis[1]=1;
	while (1){
		x=q[h]; y=q[t]; tag=0;
		for (j=head[x];j;j=mem[j].next){
			u=mem[j].to;
			if (!vis[u]){
				q[--h]=u; vis[u]=1;
				tag=1;
				break;
			}
		}
		for (j=head[y];j;j=mem[j].next){
			u=mem[j].to;
			if (!vis[u]){
				q[++t]=u; vis[u]=1;
				tag=1;
				break;
			}
		}
		if (!tag) break;
	}
	printf("%d\n",t-h+1);
	for (i=h;i<=t;i++) printf("%d ",q[i]);
	return 0;
}