#include <bits/stdc++.h>

using namespace std;

int N, M;
vector <int> G[100001];
bool used[100001];
vector <int> ans;

void dfs(int v) {
  if(!used[v]) {
    used[v] = true;
    ans.push_back(v);
  }

  for(int i = 0; i < G[v].size(); i++) {
    int u = G[v][i];
    if(!used[u]) {
      dfs(u);
      break;
    }
  }
  
  return;
}

int main() {
  cin >> N >> M;

  for(int i = 0; i < M; i++) {
    int a, b;
    cin >> a >> b;
    a--; b--;
    G[a].push_back(b);
    G[b].push_back(a);
  }

  dfs(0);
  reverse(ans.begin(),ans.end());
  dfs(0);
  
  cout << ans.size()<<endl;

  for(int i = 0; i < ans.size(); i++) {
    cout << ans[i]+1 <<" ";
  }

  cout << endl;
}
				     
