Buggy python submission (verdict: Time Limit Exceeded):
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))

n=[0]*(N+2) #i回目ワープ後にいる場所
n[0]=1
 
for i in range(1,N+1):
  if A[n[i-1]-1] in n:
    a=n.index(A[n[i-1]-1]) #ループの開始点
    le=i-a #ループする長さ
    n[i]=A[n[i-1]-1]
    break
  n[i]=A[n[i-1]-1] #i回目ワープ後にいる場所

 

if a>=K:
  print(n[K])
elif a<K:
  k_remain=(K-a)%le
 
  print(n[a:i][k_remain])

Fixed submission:
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))

n=[-1]*(N+2)
n[1]=0
i=0 #カウンター
place_now=1 #いる場所

while True:
  
  i+=1 #何回飛んだか
  place_now=A[place_now-1] #飛んだ時の場所
  
  
  if n[place_now] != -1:
    a=n[place_now] #ループの開始点
    loop=i-a #ループする長さ
    break
  
  n[place_now]=i #その場所につくのに何回飛んだか
  
if a>=K:
  print(n.index(K))
elif a<K:
  k_remain=(K-a)%loop+a
  print(n.index(k_remain))

Buggy python submission (verdict: Time Limit Exceeded):
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))

n=[0]*(N+2) #i回目ワープ後にいる場所
n[0]=1
 
for i in range(1,N+1):
  if A[n[i-1]-1] in n:
    a=n.index(A[n[i-1]-1]) #ループの開始点
    le=i-a #ループする長さ
    n[i]=A[n[i-1]-1]
    break
  n[i]=A[n[i-1]-1] #i回目ワープ後にいる場所

 

if a>=K:
  print(n[K])
elif a<K:
  k_remain=(K-a)%le
 
  print(n[a:i][k_remain])

Fixed submission:
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))

n=[-1]*(N+2)
n[1]=0
i=0 #カウンター
place_now=1 #いる場所

while True:
  
  i+=1 #何回飛んだか
  place_now=A[place_now-1] #飛んだ時の場所
  
  
  if n[place_now] != -1:
    a=n[place_now] #ループの開始点
    loop=i-a #ループする長さ
    break
  
  n[place_now]=i #その場所につくのに何回飛んだか
  
if a>=K:
  print(n.index(K))
elif a<K:
  k_remain=(K-a)%loop+a
  print(n.index(k_remain))

Buggy python submission (verdict: Runtime Error):
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))
 
if K<=N:
  nex=0
  for i in range(K):
    
    ans=A[nex]
    nex=ans
  print(ans)
  sys.exit()
    
n=[0]*(N+1) #行った場所
 
n[0]=A[0] #1回目にどこにいるか
nex=A[0]
 
for i in range(1,N): #2回目以降にどこにいるか 
  n[i]=A[nex-1] #いる場所
  nex=A[nex-1]
  
  if n[nex-1]!=0:
    d=n[nex-1]
    break
 
roop_start=n.index(d)
length=i+1-roop_start
 
k_remain=(K-len(n[:roop_start])+length)%length
 
print(n[roop_start:length+1][k_remain-1])

Fixed submission:
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))

n=[-1]*(N+2)
n[1]=0
i=0 #カウンター
place_now=1 #いる場所

while True:
  
  i+=1 #何回飛んだか
  place_now=A[place_now-1] #飛んだ時の場所
  
  
  if n[place_now] != -1:
    a=n[place_now] #ループの開始点
    loop=i-a #ループする長さ
    break
  
  n[place_now]=i #その場所につくのに何回飛んだか
  
if a>=K:
  print(n.index(K))
elif a<K:
  k_remain=(K-a)%loop+a
  print(n.index(k_remain))

Buggy python submission (verdict: Runtime Error):
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))

if K<=N:
  nex=0
  for i in range(K):
    
    ans=A[nex]
    nex=ans
  print(ans)
  sys.exit()
    
n=[0]*N #行った場所

n[0]=A[0] #1回目にどこにいるか
nex=A[0]

for i in range(1,N): #2回目以降にどこにいるか 
  n[i]=A[nex-1] #いる場所
  nex=A[nex-1]
  
  if n[nex-1]!=0:
    d=n[nex-1]
    break

roop_start=n.index(d)
length=i+1-roop_start

k_remain=(K-len(n[:roop_start])+length)%length

print(n[roop_start:length+1][k_remain-1])



Fixed submission:
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))

n=[-1]*(N+2)
n[1]=0
i=0 #カウンター
place_now=1 #いる場所

while True:
  
  i+=1 #何回飛んだか
  place_now=A[place_now-1] #飛んだ時の場所
  
  
  if n[place_now] != -1:
    a=n[place_now] #ループの開始点
    loop=i-a #ループする長さ
    break
  
  n[place_now]=i #その場所につくのに何回飛んだか
  
if a>=K:
  print(n.index(K))
elif a<K:
  k_remain=(K-a)%loop+a
  print(n.index(k_remain))

Buggy python submission (verdict: Runtime Error):
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))

if K<=N:
  nex=0
  for i in range(K):
    
    ans=A[nex]
    nex=ans
  print(ans)
  sys.exit()
    
n=[0]*N
n[0]=A[0]

for i in range(N):
  if A[n[i]-1] in n:
    a=n.index(A[n[i]-1])
    le=len(n[a:i+1]) #ループ
    break
  n[i+1]=A[n[i]-1]

k_remain=(K-len(n[:i+1])+le)%le

print(n[a:i+1][k_remain-1])

Fixed submission:
N,K = list(map(int,input().split()))
A = list(map(int,input().split()))

n=[-1]*(N+2)
n[1]=0
i=0 #カウンター
place_now=1 #いる場所

while True:
  
  i+=1 #何回飛んだか
  place_now=A[place_now-1] #飛んだ時の場所
  
  
  if n[place_now] != -1:
    a=n[place_now] #ループの開始点
    loop=i-a #ループする長さ
    break
  
  n[place_now]=i #その場所につくのに何回飛んだか
  
if a>=K:
  print(n.index(K))
elif a<K:
  k_remain=(K-a)%loop+a
  print(n.index(k_remain))