#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
// Để kiểm tra có tồn tại chu trình trong đồ thị có hướng hay không
// thì ta cũng kiểm tra có tồn tại cung ngược trong cây dfs hay không
// Nhưng sẽ phức tạp hơn vì bên cây dfs cho đồ thị có hướng
// có thêm 2 loại cung khác là cung xuôi và cung chéo
// nên cần lưu ý phân biệt được các loại cung này
const int N = 1e5 + 5;
int n, m;
vector<int> adj[N];
int color[N];
int p[N];
int cycle_start, cycle_end;
// color[u] = 0/1/2
// 0 : u chưa được thăm (dfs chưa gọi đến u)
// 1 : u đang được thăm (dfs đã gọi đến u nhưng vẫn chưa thoát khỏi u)
// 2 : u đã được thăm (dfs đã thoát khỏi u)
void dfs(int u) {
color[u] = 1;
for (int v : adj[u]) {
if (!color[v]) {
// (u, v) là cung của cây dfs
p[v] = u;
dfs(v);
}
else if (color[v] == 1) {
// (u, v) là cung ngược
cycle_start = v;
cycle_end = u;
}
// else {
// // (u, v) là cung xuôi / cung chéo
// }
}
color[u] = 2;
}
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);
}
memset(color, 0, sizeof color);
cycle_start = cycle_end = -1;
for (int u = 1; u <= n; u++) {
if (!color[u]) dfs(u);
}
if (cycle_start == -1) {
cout << "IMPOSSIBLE" << '\n';
}
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+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKLy8gxJDhu4Mga2nhu4NtIHRyYSBjw7MgdOG7k24gdOG6oWkgY2h1IHRyw6xuaCB0cm9uZyDEkeG7kyB0aOG7iyBjw7MgaMaw4bubbmcgaGF5IGtow7RuZwovLyB0aMOsIHRhIGPFqW5nIGtp4buDbSB0cmEgY8OzIHThu5NuIHThuqFpIGN1bmcgbmfGsOG7o2MgdHJvbmcgY8OieSBkZnMgaGF5IGtow7RuZwovLyBOaMawbmcgc+G6vSBwaOG7qWMgdOG6oXAgaMahbiB2w6wgYsOqbiBjw6J5IGRmcyBjaG8gxJHhu5MgdGjhu4sgY8OzIGjGsOG7m25nCi8vIGPDsyB0aMOqbSAyIGxv4bqhaSBjdW5nIGtow6FjIGzDoCBjdW5nIHh1w7RpIHbDoCBjdW5nIGNow6lvCi8vIG7Dqm4gY+G6p24gbMawdSDDvSBwaMOibiBiaeG7h3QgxJHGsOG7o2MgY8OhYyBsb+G6oWkgY3VuZyBuw6B5CmNvbnN0IGludCBOID0gMWU1ICsgNTsgCgppbnQgbiwgbTsgCnZlY3RvcjxpbnQ+IGFkaltOXTsgCgppbnQgY29sb3JbTl07IAppbnQgcFtOXTsgICAKaW50IGN5Y2xlX3N0YXJ0LCBjeWNsZV9lbmQ7ICAKCi8vIGNvbG9yW3VdID0gMC8xLzIKLy8gICAgICAgICAgICAwICAgICA6IHUgY2jGsGEgxJHGsOG7o2MgdGjEg20gKGRmcyBjaMawYSBn4buNaSDEkeG6v24gdSkKLy8gICAgICAgICAgICAgIDEgICA6IHUgxJFhbmcgxJHGsOG7o2MgdGjEg20gKGRmcyDEkcOjIGfhu41pIMSR4bq/biB1IG5oxrBuZyB24bqrbiBjaMawYSB0aG/DoXQga2jhu49pIHUpCi8vICAgICAgICAgICAgICAgIDIgOiB1IMSRw6MgxJHGsOG7o2MgdGjEg20gKGRmcyDEkcOjIHRob8OhdCBraOG7j2kgdSkKdm9pZCBkZnMoaW50IHUpIHsKCWNvbG9yW3VdID0gMTsgCglmb3IgKGludCB2IDogYWRqW3VdKSB7CgkJaWYgKCFjb2xvclt2XSkgewoJCQkvLyAodSwgdikgbMOgIGN1bmcgY+G7p2EgY8OieSBkZnMKCQkJcFt2XSA9IHU7ICAKCQkJZGZzKHYpOyAKCQl9CgkJZWxzZSBpZiAoY29sb3Jbdl0gPT0gMSkgewoJCQkvLyAodSwgdikgbMOgIGN1bmcgbmfGsOG7o2MKCQkJY3ljbGVfc3RhcnQgPSB2OyAKCQkJY3ljbGVfZW5kID0gdTsgIAoJCX0KCQkvLyBlbHNlIHsKCQkvLyAJLy8gKHUsIHYpIGzDoCBjdW5nIHh1w7RpIC8gY3VuZyBjaMOpbwoJCS8vIH0KCX0KCWNvbG9yW3VdID0gMjsgIAp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbiA+PiBtOyAKCglmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewoJCWludCB1LCB2OyAKCQljaW4gPj4gdSA+PiB2OyAKCQlhZGpbdV0ucHVzaF9iYWNrKHYpOyAKCX0KCgltZW1zZXQoY29sb3IsIDAsIHNpemVvZiBjb2xvcik7ICAgCgljeWNsZV9zdGFydCA9IGN5Y2xlX2VuZCA9IC0xOyAgIAoJZm9yIChpbnQgdSA9IDE7IHUgPD0gbjsgdSsrKSB7CgkJaWYgKCFjb2xvclt1XSkgZGZzKHUpOyAKCX0KCglpZiAoY3ljbGVfc3RhcnQgPT0gLTEpIHsKCQljb3V0IDw8ICJJTVBPU1NJQkxFIiA8PCAnXG4nOyAKCX0KCWVsc2UgewoJCXZlY3RvcjxpbnQ+IGN5Y2xlOyAgCgkJaW50IHQgPSBjeWNsZV9lbmQ7IAoJCXdoaWxlICh0cnVlKSB7CgkJCWN5Y2xlLnB1c2hfYmFjayh0KTsgCgkJCWlmICh0ID09IGN5Y2xlX3N0YXJ0KSBicmVhazsgIAoJCQl0ID0gcFt0XTsgCgkJfQoJCXJldmVyc2UoY3ljbGUuYmVnaW4oKSwgY3ljbGUuZW5kKCkpOyAgCgkJY3ljbGUucHVzaF9iYWNrKGN5Y2xlX3N0YXJ0KTsgCgoJCWNvdXQgPDwgY3ljbGUuc2l6ZSgpIDw8ICdcbic7IAoJCWZvciAoaW50IHUgOiBjeWNsZSkgY291dCA8PCB1IDw8ICcgJzsgCgl9Cn0=