#include using namespace std; using ll=long long; long long extgcd(long long a,long long b,long long& x,long long& y){ if(b==0){ x=1;y=0; return a; } long long d=extgcd(b,a%b,y,x); y-=a/b*x; return d; } int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int ttt; cin>>ttt; while(ttt--){ int n,p; cin>>n>>p; vector a(n); for(int i=0;i>a[i],a[i]--; vector>> cycles(n+1); vector seen(n); for(int i=0;i cycle({i}); while(cur!=i){ seen[cur]=true; cycle.push_back(cur); cur=a[cur]; } ranges::reverse(cycle); cycles[cycle.size()].push_back(cycle); } vector b(n,-1); for(int i=1;i<=n;i++){ if(i%2==1){ ll x,y; extgcd(2*p,i,x,y); if(x<0)x+=(-x+i-1)/i*i; x%=i; for(auto vec:cycles[i]){ for(int j=0;j big_cycle; for(int k=0;k