#include <bits/stdc++.h>
using namespace std;
namespace {
class dsu {
int n;
vector<int> par;
public:
dsu(int n) : n(n), par(n) {
iota(par.begin(), par.end(), 0);
}
int root(int u) { return u == par[u] ? u : par[u] = root(par[u]); }
void merge(int u, int v) {
u = root(u), v = root(v);
if (u != v) {
par[v] = u;
}
}
};
} // namespace
variant<bool, vector<int>> find_journey(int N, int M, vector<int> U, vector<int> V) {
vector<pair<pair<int, int>, int>> edges;
for (int i = 0; i < M; ++i) {
edges.push_back({{U[i], V[i]}, i});
}
auto idx = [&](int u, int v) {
pair<pair<int, int>, int> p = {{u, v}, -1};
auto it = lower_bound(edges.begin(), edges.end(), p);
assert(it != edges.end());
return it->second;
};
vector<vector<int>> adj(N);
dsu dsu(N);
for (int i = 0; i < M; ++i) {
adj[U[i]].push_back(V[i]);
if (U[i] != 0 && V[i] != 0) {
dsu.merge(U[i], V[i]);
}
}
for (int i = 0; i < int(adj[0].size()); ++i) {
for (int j = i + 1; j < int(adj[0].size()); ++j) {
if (dsu.root(adj[0][i]) == dsu.root(adj[0][j])) {
return true;
}
}
}
return false;
}
#ifdef MACOS_LOCAL
#include "grader.cpp"
#endif