#include using namespace std; typedef long long ll; vectorsolve2(const vector&v,int from){ vectorque; mapmp; for(int x=from;x solve(int N,long long int K,vectorv,int start){ vectorrs(N); { mapmp; for(int i=N-1;i>=0;--i){ mp[v[i]]=N+i; } for(int i=N-1;i>=0;--i){ rs[i]=mp[v[i]]; mp[v[i]]=i; } } long long int ny=0,nx=start; mapmp; mp[start]=0; while(true){ //cout<=N){ next_y++; next_x-=N; } next_x++; if(next_x>=N){ next_y++; next_x-=N; } if(next_y>=K){ if(K-1==next_y){ v.insert(v.end(),v.begin(),v.end()); } return solve2(v,nx); }else{ ny=next_y; nx=next_x; if(mp.find(nx)==mp.end()){ mp[nx]=ny; }else{ long long sa=-(mp[nx]-ny); long long int rest=K-ny; rest%=sa; //cout<