#include<bits/stdc++.h>
using namespace std;
int n,m,a,b;
vector<int> e[100001];

int main(){
  cin>>n>>m;
  for(int i=0;i<m;i++)
    cin>>a>>b,e[a].push_back(b),e[b].push_back(a);
  bool used[100001];
  memset(used,0,sizeof(used));
  int p=1;
  deque<int> ans;
  while(!used[p]){
    used[p]=1;
    ans.push_back(p);
    for(int i=0;i<(int)e[p].size();i++)
      if(!used[e[p][i]]){p=e[p][i];break;}
  }
  p=1;
  used[1]=0;
  while(!used[p]){
    used[p]=1;
    if(p!=1)ans.push_front(p);
    for(int i=0;i<(int)e[p].size();i++)
      if(!used[e[p][i]]){p=e[p][i];break;}
  }
  cout<<ans.size()<<endl;
  while(!ans.empty()){
    cout<<ans.front()<<" ";
    ans.pop_front();
  }
  cout<<endl;
  return 0;
}
