/* 別解のダブリングというテクニックを使って解いてみる */
function main(input) {
  let [n, k] = input[0].trim().split(" ").map(i => BigInt(i));
  const a = input[1].trim().split(" ").map(i => parseInt(i-1));

  //2**?の深さを確かめる
  let max_depth = 0n;
  while(true){
    max_depth++;
    if(2n**max_depth>k){
      max_depth--;
      break;
    }
  }

  /* ダブリングによるマップを作る */
  let map = [];
  map[0] = a;
  for(let i=1;i<=max_depth;i++){
    map[i] = [];
    for(let j=0;j<n;j++){
      map[i][j]= map[i-1][map[i-1][j]];
    }
  }

  //k番目の要素までの経路を作成する
  let map_load = [];
  for(let i=max_depth;i>=0n;i--){
    let pow2 = 2n**i;
    if(k>=pow2){
      for(let j=0n;j<(k/pow2);j++){
        k-=pow2;
        map_load.push(i);
      }
    }
    if(k===0n){
      break;
    }
  }
  //経路通りに辿って答えを見つける
  let now = 0;
  for(let i of map_load){
    now=map[i][now];
  }

  console.log((now+1)+"");
}
main(require('fs').readFileSync('/dev/stdin', 'utf8').trim().split("\n"));