#include "islands.h"
#include <bits/stdc++.h>
#include <variant>
#include <vector>
using namespace std;
variant<bool, vector<int>> find_journey(int n, int m, vector<int> u, vector<int> v) {
int cnt = 0;
for (int i = 0; i < m; i++) {
if (u[i] == 0) {
cnt++;
}
}
if (cnt >= 2) {
vector<int> ans;
vector<int> zz;
for (int i = 0; i < m; i++) {
if (u[i] == 0) {
zz.push_back(i);
}
}
ans.push_back(zz[0]);
ans.push_back(zz[0] ^ 1);
ans.push_back(zz[1]);
ans.push_back(zz[1] ^ 1);
ans.push_back(zz[0] ^ 1);
ans.push_back(zz[0]);
ans.push_back(zz[1] ^ 1);
ans.push_back(zz[1]);
return ans;
}
vector<vector<pair<int, int>>> g(n);
for (int i = 0; i < m; i++) {
g[u[i]].emplace_back(v[i], i);
}
if (cnt == 1) {
vector<int> ans;
int uu = 0, p = -1;
while (true) {
int cnt_ = 0;
for (auto [vv, _] : g[uu]) {
if (vv != p) {
cnt_++;
}
}
if (cnt_ >= 2) {
vector<int> aa;
for (auto [vv, _] : g[uu]) {
if (vv != p) {
aa.push_back(_);
}
}
vector<int> prv = ans;
ans.push_back(aa[0]);
ans.push_back(aa[0] ^ 1);
ans.push_back(aa[1]);
ans.push_back(aa[1] ^ 1);
ans.push_back(aa[0] ^ 1);
ans.push_back(aa[0]);
ans.push_back(aa[1] ^ 1);
ans.push_back(aa[1]);
reverse(prv.begin(), prv.end());
for (int x : prv) {
ans.push_back(x);
}
return ans;
} else if (cnt_ == 1) {
for (auto [vv, _] : g[uu]) {
if (vv != p) {
ans.push_back(_);
}
}
int vvv = -1;
for (auto [vv, _] : g[uu]) {
if (vv != p) {
vvv = vv;
}
}
p = uu;
uu = vvv;
}
if (cnt_ == 0) {
break;
}
}
}
return false;
}