#include <stdio.h>
#include<string.h>
#include<math.h>
int main() {
	long long N, K;
  	scanf("%lld %lld", &N, &K);
//  	printf("%lld %lld\n", N, K);
  	long long map[N], t;
  	for (int i = 0; i < N; i++) {
      scanf("%lld", &t);
      map[i] = t;
    }
//  	for (int i = 0; i < N; i++) printf("map %d %d\n",i, map[i]);
  	long long map2[N + 1];
    long long pt = 0, nx;
    map2[0] = 1;
    map2[1] = 1;
//    printf("map2 %d %d\n",0, map2[0]);
  	for (int i = 1; i < N + 1; i++) {
      map2[i] = map[pt];
//      printf("map2 %d %lld\n",i, map2[i]);
      pt = map2[i] -1;
    }
  	long long a1, fd = 0, lp1 = 0, lpsu = 0;
  	for (int i = 1; i < N + 1; i++) {
	  a1 = map2[i];	
      for (int j = i + 1; j < N + 1; j++) {
          if (a1 == map2[j]) {
            lp1 = i;
            lpsu = j - i;
            fd = 1;
//            printf("find lp1=%lld lpsu=%lld a1=%lld\n", lp1, lpsu, a1);
            break;
       	  }
          if (fd) break;
      }
    }
    if (fd) {
      long long map3[lpsu];
      for (int i = 0; i < lpsu; i++) {
        map3[i] = map2[i + lp1];
//        printf("map3 %d %lld\n", i, map3[i]);
    }
      if (K <= lp1 + lpsu) {
        // K none
      } else {
        long long nk = K - lp1;
        long long  md = nk % lpsu;
        md += (md == 0) ? 3 : 0;
//        printf("nK = %lld mod=%lld\n", nk, md);
//        printf("K = %lld\n", K);
		K = lp1 + md;
      }
    }  
//    printf("K = %lld\n", K);
    int ix = 0;
  	int np = (int)map[ix] -1;
//  	  printf("(0) ix=%d np=%lld\n",ix, np);
    for (int i = 1; i < (int)K; i++) {
      	ix = np;
		np = map[ix] -1;
//  	    printf("(%d) ix=%d np=%lld  map[ix]=%d\n",i, ix, np, map[ix]);
    }
  	printf("%lld", np+1);
  return 0;
}