#include <bits/stdc++.h> using namespace std; #define int long long int #define mp make_pair #define pb push_back #define F first #define S second const int N=1000005; #define M 1000000007 #define double long double #define BINF 1000000000001 #define init(arr,val) memset(arr,val,sizeof(arr)) #define MAXN 15000001 const int LG = 22; stack<int>s; vector<int>v[N]; bool vis[N]; int print(){ vector<int>val; int x = s.top(); s.pop(); val.pb(x); while(1){ int y = s.top(); s.pop(); val.pb(y); if(y == x) break; } cout << val.size() << endl; for(auto i : val) cout << i << ' '; exit(0); } void dfs(int u, int p){ vis[u] = 1; s.push(u); for(auto i : v[u]){ if(i != p and !vis[i]) dfs(i,u); else if(i != p and vis[i]){ s.push(i); print(); } } s.pop(); } #undef int int main() { #define int long long int ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n,m; cin >> n >> m; for(int i = 0; i < m; i++){ int x,y; cin >> x >> y; v[x].pb(y); v[y].pb(x); } for(int i = 1; i <= n; i++){ if(!vis[i]){ while(s.size()) s.pop(); dfs(i,0); } } cout << "IMPOSSIBLE\n"; return 0; }