def main():

    n, k = [int(x) for x in input().split()]

    teleporter = [int(x) - 1 for x in input().split()]

    route = []

    route_append = route.append

    seen = [False] * n

    traveled, now_i = 0, 0



    while traveled < n + 100:

        if seen[now_i]:

            # テレポートがループしたら，ルート調査は終了する。

            break

        route_append(now_i)

        seen[now_i] = True

        now_i = teleporter[now_i]

        traveled += 1



    # 調査終了後，now_1 はループ部分の頭。ループ前にイントロがある。

    # ループ頭は何番目に尋ねるか？

    # intro_length = [i for i, x in enumerate(route) if x == now_i][-1]

    intro_length = route.index(now_i)

    loop_length = len(route) - intro_length

    if k >= intro_length:

        arriving_i = intro_length + (k - intro_length) % loop_length

    else:

        # k が イントロ内に収まっている場合。

        arriving_i = k

    return route[arriving_i] + 1





if __name__ == '__main__':

    print((main()))

def main():

    n, k = [int(x) for x in input().split()]

    teleporter = [int(x) - 1 for x in input().split()]

    route = []

    route_append = route.append

    seen = [False] * n

    traveled, now_i = 0, 0



    while True:

        if seen[now_i]:

            # テレポートがループしたら，ルート調査は終了する。

            break

        route_append(now_i)

        seen[now_i] = True

        now_i = teleporter[now_i]

        traveled += 1



    # 調査終了後，now_1 はループ部分の頭。ループ前にイントロがある。

    # ループ頭は何番目に尋ねるか？

    intro_length = route.index(now_i)

    loop_length = len(route) - intro_length

    if k >= intro_length:

        arriving_i = intro_length + (k - intro_length) % loop_length

    else:

        # k が イントロ内に収まる場合。ここを見落としてWA連発！

        arriving_i = k

    return route[arriving_i] + 1





if __name__ == '__main__':

    print((main()))

def main():
    n, k = [int(x) for x in input().split()]
    teleporter = [int(x) - 1 for x in input().split()]
    route = []
    route_append = route.append
    seen = [False] * n
    traveled, now_i = 0, 0
    while traveled < n + 100:
        if seen[now_i]:
            # テレポートがループしたら，ルート調査は終了する。
            break
        route_append(now_i)
        seen[now_i] = True
        now_i = teleporter[now_i]
        traveled += 1
    # 調査終了後，now_1 はループ部分の頭。ループ前にイントロがある。
    # ループ頭は何番目に尋ねるか？
    # intro_length = [i for i, x in enumerate(route) if x == now_i][-1]
    intro_length = route.index(now_i)
    loop_length = len(route) - intro_length
    if k >= intro_length:
        arriving_i = intro_length + (k - intro_length) % loop_length
    else:
        # k が イントロ内に収まっている場合。
        arriving_i = k
    return route[arriving_i] + 1


if __name__ == "__main__":
    print((main()))

def main():
    n, k = [int(x) for x in input().split()]
    teleporter = [int(x) - 1 for x in input().split()]
    route = []
    route_append = route.append
    seen = [False] * n
    traveled, now_i = 0, 0
    while True:
        if seen[now_i]:
            # テレポートがループしたら，ルート調査は終了する。
            break
        route_append(now_i)
        seen[now_i] = True
        now_i = teleporter[now_i]
        traveled += 1
    # 調査終了後，now_1 はループ部分の頭。ループ前にイントロがある。
    # ループ頭は何番目に尋ねるか？
    intro_length = route.index(now_i)
    loop_length = len(route) - intro_length
    if k >= intro_length:
        arriving_i = intro_length + (k - intro_length) % loop_length
    else:
        # k が イントロ内に収まる場合。ここを見落としてWA連発！
        arriving_i = k
    return route[arriving_i] + 1


if __name__ == "__main__":
    print((main()))

-    while traveled < n + 100: +    while True: -    # intro_length = [i for i, x in enumerate(route) if x == now_i][-1] -        # k が イントロ内に収まっている場合。 +        # k が イントロ内に収まる場合。ここを見落としてWA連発！