Problem:
Score: 400 points

Problem Statement

The Kingdom of Takahashi has N towns, numbered 1 through N.

There is one teleporter in each town. The teleporter in Town i (1 \leq i \leq N) sends you to Town A_i.

Takahashi, the king, loves the positive integer K. The selfish king wonders what town he will be in if he starts at Town 1 and uses a teleporter exactly K times from there.

Help the king by writing a program that answers this question.

Constraints

2 \leq N \leq 2 \times 10^5

1 \leq A_i \leq N

1 \leq K \leq 10^{18}

Input

Input is given from Standard Input in the following format:

N K
A_1 A_2 \dots A_N

Output

Print the integer representing the town the king will be in if he starts at Town 1 and uses a teleporter exactly K times from there.

Sample Input 1

4 5
3 2 4 1

Sample Output 1

4

If we start at Town 1 and use the teleporter 5 times, our travel will be as follows: 1 \to 3 \to 4 \to 1 \to 3 \to 4.

Sample Input 2

6 727202214173249351
6 5 2 5 3 2

Sample Output 2

2

Solution in Go (1.14.1) (judge verdict: Wrong Answer)

package main

import (
	"fmt"
)

func findCircuit(array []int) (int, int) {
	for i := 0; i < len(array); i++ {
		var target = array[i]
		for j := i+1; j < len(array); j++ {
			if array[j] == target {
				return i, j
			}
		}
	}
	return -1, -1
}

func main() {
	var n, k int
	fmt.Scanf("%d %d", &n, &k)

	fmt.Printf("%d %d", n, k)

	a := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Scan(&a[i])
	}

	b := make([]int, n + 2)
	b[0] = 1
	for i := 0; i < n; i++ {
		b[i+1] = a[b[i] - 1]
	}
	// fmt.Printf("%d", b)
	var start, end = findCircuit(b)
	var duration = end - start
	// fmt.Printf("%d %d %d", start, end, duration)

	if start >= k {
		now := 0
		for i := 0; i < k; i++ {
			now = a[now] - 1
		}
		fmt.Printf("%d", now)
	} else {
		k = k - start
		k = k % duration
		// fmt.Printf("k=%d", k)
		fmt.Printf("%d", b[start + k])
	}
}