#include using namespace std; void solve(){ int n,p; cin>>n>>p; vector a(n),tmp(n); for (int i=0;i>a[i]; a[i]--; tmp[a[i]]=i; } swap(a,tmp); vector>> g(n+1); { vector vis(n); vector vec; auto dfs=[&](auto dfs,int v)-> void { if (vis[v]){ g[(int)vec.size()].push_back(vec); vec.clear(); return; } vis[v]=true; vec.push_back(v); dfs(dfs,a[v]); }; for (int i=0;i ans(n,-1); { auto f=[&](vector vec){ int k=vec.size(); if (k==1){ ans[vec[0]]=vec[0]; return -1; } int j=-1; for (int i=0;i>t; while (t--) solve(); }