#include <bits/stdc++.h>
using namespace std;
variant<bool, vector<int>> find_journey(int N, int M, vector<int> U, vector<int> V) {
vector<vector<pair<int, int>>> adj(N);
for (int i = 0; i < M; ++i) {
if (i % 2 == 0) {
adj[U[i]].push_back({V[i], i});
}
}
vector<bool> stk_nodes(N), vis_edges(M);
vector<int> stk;
int cycle = 0;
auto dfs = [&](auto &&self, int u) {
if (stk_nodes[u]) {
cycle = 1;
return;
}
stk_nodes[u] = true;
for (auto &[i, idx] : adj[u]) {
if (vis_edges[idx]) {
continue;
}
vis_edges[idx] = true;
stk.push_back(idx);
self(self, i);
if (cycle) {
return;
}
stk.pop_back();
}
stk_nodes[u] = false;
};
dfs(dfs, 0);
if (!cycle) {
return false;
}
vector<int> ans = stk;
for (int &i : stk) {
ans.push_back(i + 1);
}
reverse(stk.begin(), stk.end());
for (int &i : stk) {
ans.push_back(i);
}
for (int &i : stk) {
ans.push_back(i + 1);
}
return ans;
}
#ifdef MACOS_LOCAL
#include "grader.cpp"
#endif