#include <bits/stdc++.h>
using namespace std;
vector<int> v[100005];
int out[100005];
bool mark[100005];
bool D(int now, int &met, int shoud, int F) {
  out[met] = now;
  if (now == F && met == shoud) return true;
  mark[now] = true;
  for (int i = 0; i < v[now].size(); i++) {
    if (v[now][i] == F && met >= shoud) return true;
    if (!mark[v[now][i]]) {
      met++;
      if (D(v[now][i], met, shoud, F)) return true;
      met--;
    }
  }
  return false;
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 0; i < m; i++) {
    int t1, t2;
    cin >> t1 >> t2;
    v[t1].push_back(t2);
    v[t2].push_back(t1);
  }
  for (int i = 1; i <= n; i++) {
    int met = 1;
    if (!mark[i] && D(i, met, k + 1, i)) {
      cout << met << endl;
      for (int i = 1; i <= met; i++) {
        if (i > 1) cout << ' ';
        cout << out[i];
      }
      cout << endl;
      return 0;
    }
  }
  return 0;
}
