   program abc167d
      implicit none
      integer(8)::n
      integer(8),allocatable,dimension(:)::a,s,flag,flag_turn
      integer(8)::k
      integer(8)::i
      integer(8)::num_to_loop,num_loop

         read *, n,k
         allocate(a(n),s(0:n),flag(n),flag_turn(n))
         read *, a(1:n)

         s(0)=1; flag=0; flag(1)=1; flag_turn=0; flag_turn(1)=0
         do i=1,n
            s(i)=a(s(i-1))
            if (flag(s(i))/=1) then  ! if not visited
               flag(s(i))=1          ! marking 'visited'
               flag_turn(s(i))=i
            else             
               num_to_loop=i
               num_loop=i-flag_turn(s(i))
               exit
            end if
         end do

         if (num_to_loop>=k) then
            print *, s(k)
         else
            print *, s( mod( k - num_to_loop, num_loop ) + &
                     ( num_to_loop - num_loop) )
         end if

   end program abc167d