import "dart:io";
 
void main() {
  	final List<int> input = stdin.readLineSync().split(' ').map((x) => int.parse(x)).toList();
  	final List<int> teleport = stdin.readLineSync().split(' ').map((x) => int.parse(x)).toList();
  	int n = input[0];
  	int k = input[1];
  	var visitSeq = new List.filled(n+1, 0);
	visitSeq[1] = 1;
	//次に行く街、訪れた街の数、循環開始の街、循環終了の街、循環する街の数、目的の街は何番目に訪れる街か
	int next = 1;
    int count = 1;
    int start = 0;
    int end = 0;
    int roop = 0;
    int target = 0;
	next = teleport[0];
  	if (k == 1) {
		print(next);
	} else {
      	for (int i = 2; i <= k; i++) {
          	if (visitSeq[next] == 0) {
              	//まだ訪れていない街の場合、何番目に訪れるかを記録する
				count++;
				visitSeq[next] = count;
				end = next;
				//fmt.Println("訪れる街：", next, "何番目に訪れる街？：", count)
			} else {
				//訪れたことがある街の場合、ループが存在する
				start = next;
              	if (next == 1) {
					//街1が循環開始の場合：1～endを循環している
					roop = visitSeq[end];
					//循環を無視して目的の街が何番目に訪れる街に相当するかを求める
					target = k%roop + 1;
				} else {
					//街1以外が循環開始の場合、start～endまでの街を循環している
					roop = visitSeq[end] - visitSeq[start] + 1;
					//循環を無視して目的の街が何番目に訪れる街に相当するかを求める
					target = visitSeq[start] + (k-visitSeq[start]+1)%roop;
				}
				break;
			}
			next = teleport[next-1];
			//そもそも循環しない場合は最後に到着する街を出力
          	if (i == k) {
				print(next);
				return;
			}
		}
		//targetの値から目的の街を求める
      	for (int i = 1; i <= n; i++) {
          	if (visitSeq[i] == target) {
				print(i);
				return;
			}
		}
	}
}