#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 1e5 + 5;
// Để kiểm tra một đồ thị vô hướng có tồn tại chu trình hay không
// thì ta kiểm tra có tồn tại cạnh ngược trong cây dfs hay không
int n, m;
vector<int> adj[N];
bool vis[N];
int p[N]; // p[u] là đỉnh cha của u trên cây dfs
int cycle_start, cycle_end;
void dfs(int u) {
vis[u] = true;
for (int v : adj[u]) {
if (v == p[u]) continue;
if (!vis[v]) {
// (u, v) là cạnh của cây dfs (cạnh nét liền)
p[v] = u;
dfs(v);
}
else {
// (u, v) là cạnh ngược (cạnh nét đứt)
if (cycle_start == -1) {
cycle_start = v;
cycle_end = u;
}
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
cycle_start = -1;
for (int u = 1; u <= n; u++) {
if (!vis[u]) dfs(u);
}
if (cycle_start == -1) {
cout << "IMPOSSIBLE";
}
else {
vector<int> cycle;
int t = cycle_end;
while (true) {
cycle.push_back(t);
if (t == cycle_start) break;
t = p[t];
}
reverse(cycle.begin(), cycle.end());
cycle.push_back(cycle_start);
cout << cycle.size() << '\n';
for (int u : cycle) cout << u << ' ';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAxZTUgKyA1OyAKCi8vIMSQ4buDIGtp4buDbSB0cmEgbeG7mXQgxJHhu5MgdGjhu4sgdsO0IGjGsOG7m25nIGPDsyB04buTbiB04bqhaSBjaHUgdHLDrG5oIGhheSBraMO0bmcKLy8gdGjDrCB0YSBraeG7g20gdHJhIGPDsyB04buTbiB04bqhaSBj4bqhbmggbmfGsOG7o2MgdHJvbmcgY8OieSBkZnMgaGF5IGtow7RuZwppbnQgbiwgbTsgIAp2ZWN0b3I8aW50PiBhZGpbTl07IAoKYm9vbCB2aXNbTl07IAppbnQgcFtOXTsgLy8gcFt1XSBsw6AgxJHhu4luaCBjaGEgY+G7p2EgdSB0csOqbiBjw6J5IGRmcwppbnQgY3ljbGVfc3RhcnQsIGN5Y2xlX2VuZDsgCgp2b2lkIGRmcyhpbnQgdSkgewoJdmlzW3VdID0gdHJ1ZTsgIAoJZm9yIChpbnQgdiA6IGFkalt1XSkgewoJCWlmICh2ID09IHBbdV0pIGNvbnRpbnVlOyAgCgkJaWYgKCF2aXNbdl0pIHsKCQkJLy8gKHUsIHYpIGzDoCBj4bqhbmggY+G7p2EgY8OieSBkZnMgKGPhuqFuaCBuw6l0IGxp4buBbikKCQkJcFt2XSA9IHU7IAoJCQlkZnModik7IAoJCX0KCQllbHNlIHsKCQkJLy8gKHUsIHYpIGzDoCBj4bqhbmggbmfGsOG7o2MgKGPhuqFuaCBuw6l0IMSR4bupdCkKCQkJaWYgKGN5Y2xlX3N0YXJ0ID09IC0xKSB7CgkJCQljeWNsZV9zdGFydCA9IHY7ICAKCQkJCWN5Y2xlX2VuZCA9IHU7ICAKCQkJfQoJCX0KCX0KfQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gbTsgCgoJZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKCQlpbnQgdSwgdjsgCgkJY2luID4+IHUgPj4gdjsgCgkJYWRqW3VdLnB1c2hfYmFjayh2KTsgCgkJYWRqW3ZdLnB1c2hfYmFjayh1KTsgCgl9CgoJY3ljbGVfc3RhcnQgPSAtMTsgCglmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIHsKCQlpZiAoIXZpc1t1XSkgZGZzKHUpOyAKCX0KCglpZiAoY3ljbGVfc3RhcnQgPT0gLTEpIHsKCQljb3V0IDw8ICJJTVBPU1NJQkxFIjsgCgl9CgllbHNlIHsKCQl2ZWN0b3I8aW50PiBjeWNsZTsgCgkJaW50IHQgPSBjeWNsZV9lbmQ7ICAKCQl3aGlsZSAodHJ1ZSkgewoJCQljeWNsZS5wdXNoX2JhY2sodCk7ICAKCQkJaWYgKHQgPT0gY3ljbGVfc3RhcnQpIGJyZWFrOwoJCQl0ID0gcFt0XTsgIAoJCX0KCQlyZXZlcnNlKGN5Y2xlLmJlZ2luKCksIGN5Y2xlLmVuZCgpKTsgIAoJCWN5Y2xlLnB1c2hfYmFjayhjeWNsZV9zdGFydCk7ICAKCgkJY291dCA8PCBjeWNsZS5zaXplKCkgPDwgJ1xuJzsgCgkJZm9yIChpbnQgdSA6IGN5Y2xlKSBjb3V0IDw8IHUgPDwgJyAnOyAKCX0KfQ==