#include #include using namespace std; using ll = int64_t; #define all(x) ::begin(x), ::end(x) #define debug(x...) [](auto&& ...y){ cerr << "["#x"]:"; ((cerr << ' ' << y), ...) << endl; }(x) vector>> adj; vector cycle; void addEdge(int u, int v, int val) { adj[u].emplace_back(v, val); } void euler(int v) { while (!adj[v].empty()) { auto [u, rev] = adj[v].back(); adj[v].pop_back(); euler(u); cycle.push_back(rev); } } int main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector a(n); for (int& e : a) cin >> e, e--; auto a2 = a; sort(all(a2)); adj.resize(n); vector> ans; vector rev(n); for (int i=0; i comps; for (int i=0; i