#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;
}