#include<iostream> #include<vector> #include<map> #include<set> using namespace std; int main() { int N;long long X; cin>>N>>X; vector<int>A(N); set<int> mex; map<int,int> count; for(int i=0;i<2e5+1000;++i)mex.emplace(i); for(int i=0;i<N;++i){ cin>>A[i]; mex.erase(A[i]); count[A[i]]++; } int loopEndIdx=0; int first = -1; for(int i=N;i<N*20;++i) { A.emplace_back(*mex.begin()); count[*mex.begin()]++; if(*mex.begin()==first) { loopEndIdx = i; break; } if(i==N)first=*mex.begin(); mex.erase(mex.begin()); count[A[i-N]]--; if(count[A[i-N]]==0) { mex.emplace(A[i-N]); } } int loopLen = loopEndIdx - N; /* for(int i:A)cout << i << ' '; cout << endl; cout << "loopLen " << loopLen << endl; */ if(--X < N) { cout << A[X] << endl; return 0; } X -= N; cout << A[X%loopLen + N] << endl; /* for(int i=N;i<=N*20;++i) { int res = 0; for(int j=0;j<200;++j) { if(count[j]==0) { res = j; break; } } count[res]++; A.emplace_back(res); count[A[i-N]]--; } for(int i=0;i<100;++i) cout<<A[i] << ' '; */ }