#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
using namespace std;
// using namespace __gnu_pbds;
#define ll long long int
#define ld long double
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define mk make_pair
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define fs first
#define sc second 
#define mod 1000000007ll
#define sp <<" "<<
#define JOKER ios_base::sync_with_stdio (false) ; cin.tie(0) ; cout.tie(0) ;
// typedef tree<lli, null_type, less_equal<lli>, rb_tree_tag, tree_order_statistics_node_update> ordered_multiset;

// int spf[10000001];
// ll fac[200005];
// ll comb[1010][1010];
// const ll MAXN=1e6+5;
// ll tree[MAXN];
// void inc(ll pos);
// ll get(ll pos);
// ll get_kth(ll k);
// void combfun();
// void sieve(int n);
// ll expo(ll base,ll exponent);
// ll power(ll x, ll y, ll p);
// ll modInverse(ll n, ll p);
// ll nCrModPFormat(ll n, ll r, ll p);

int main()  
{
    JOKER
    int t=1; 
    // cin>>t;
    while(t--)
    {
        ll n,k;
        cin>>n>>k;
        ll a[n];
        for(ll i=0; i<n; i++)
        {
            cin>>a[i];
        }
        ll vis[n+1];
        memset(vis,0ll,sizeof(vis));
        vector<ll>v;
        ll idx=0;
        while(vis[a[idx]]!=1ll)
        {
            v.pb(a[idx]);
            vis[a[idx]]=1ll;
            idx=a[idx];
            idx--;
        }
        ll f=a[idx];
        if(k<=(ll)v.size())
        {
            cout<<v[k-1ll]<<endl;
        }
        else 
        {
            k-=v.size();
            ll g=-1;
            for(ll i=0; i<(ll)v.size(); i++)
            {
                if(v[i]==f)
                {
                    g=i;
                }
            }
            // cout<<g<<endl;
            ll g1=(ll)v.size()-g;
            // cout<<g1<<endl;
            k%=g1;
            if(k==0ll)
            {
                cout<<v.back()<<endl;
            }
            // cout<<k<<endl;
            else 
            {
                k--;
                cout<<v[g+k]<<endl;
            }
        } 

    }
    cerr<<"Time elapsed : "<<clock()*1000.0/CLOCKS_PER_SEC<<"ms"<<'\n'; 
    return 0;
}

// void combfun()
// {
//     for(int i=1; i<1010; i++)
//     {
//         for(int j=0; j<=i; j++)
//         {
//             if(j==0 or i==j)
//             {
//                 comb[i][j]=1;
//             }
//             else 
//             {
//                 comb[i][j]=comb[i-1][j]+comb[i-1][j-1];
//                 comb[i][j]%=mod;
//             }
//         }
//     }
// }

// ll expo(ll base,ll exponent)
// {
//     ll ans=1ll;
//     while(exponent!=0ll){
//         if(exponent&1ll)ans=(ans*base)%mod;
//         base=(base*base)%mod;
//         exponent>>=1ll;
//     }
//     return ans%mod;
// }

// void sieve(int n)
// {
//     spf[1]=1;
//     for(int i=2;i<=n;i++) spf[i]=i;
//     for(int i=4;i<=n;i+=2) spf[i]=2;
//     for(int i=3;i*i<=n;i++)
//     {
//         if(spf[i]==i)
//         {
//             for(int j=i*i;j<=n;j+=i)
//             {
//                 if(spf[j]==j) spf[j]=i;
//             }
//         }
//     }
// }

// ll power(ll x, ll y, ll p) 
// { 
//     ll res = 1;
//     x = x % p;
//     while (y > 0) 
//     { 
//         if (y & 1) 
//             res = (res*x) % p; 
//         y = y>>1;
//         x = (x*x) % p; 
//     } 
//     return res; 
// }

// void inc(ll pos) {
//     for (; pos < MAXN; pos |= (pos + 1)) {
//         tree[pos] += 1;
//     }
// }
 
// ll get(ll pos) {
//     ll ans = 0;
//     for (; pos >= 0; pos = (pos & (pos + 1)) - 1) {
//         ans += tree[pos];
//     }
//     return ans;
// }

// ll get_kth(ll k) {
//     ll l = -1, r = MAXN;
//     while (r - l > 1) {
//         ll mid = (l + r) / 2;
//         if (get(mid) < k) {
//             l = mid;
//         } else {
//             r = mid;
//         }
//     }
//     return r;
// }

// ll modInverse(ll n, ll p) 
// { 
//     return power(n, p-2, p); 
// } 

// ll nCrModPFormat(ll n, ll r, ll p) 
// {
//     if (r==0) 
//         return 1; 
//     return (fac[n]* modInverse(fac[r], p) % p * modInverse(fac[n-r], p) % p) % p; 
// }

Measured memory_bytes: 8452