void find_cycle(){
color.assign(n, 0); // Directed graph
visited.assign(n, false); // Undirected graph
parent.assign(n, -1);
cycle_start = -1;
for(int v = 0; v<n; v++){
if(color[v] == 0 and dfs(v)){
break;
}
}
if(cycle_start == -1){
//cout << "Ascyclic Graph"<<endl;
//cout << -1 << endl;
cout << "IMPOSSIBLE"<< endl;
}
else{
std::vector<int> cycle;
cycle.push_back(cycle_start);
for(int v = cycle_end; v != cycle_start; v = parent[v]){
cycle.push_back(v);
}
cycle.push_back(cycle_start);
reverse(cycle.begin(), cycle.end());
// sort(cycle.begin(), cycle.end());
cout << cycle.size()<< endl;
for(int v:cycle){
cout << v+1 <<' ';
}
}
}