Harryxun/stf_run huggingface dataset:
#!/usr/bin/env python3
import sys, math, fractions, itertools

YES = "Yes"  # type: str
NO = "No"  # type: str

def solve(H: int, W: int, s: "List[str]"):
    flag = True
    for h in range(H):
        for w in range(W):
            if s[h][w] == '#':
                if h == H-1: U = True
                else: U = s[h+1][w] != '#'
                if h == 0: D = True
                else: D = s[h-1][w] != '#'
                if w == 0: L = True
                else: L = s[h][w-1] != '#'
                if w == W-1: R = True
                else: R = s[h][w+1] != '#'
                if all([U, D, L, R]):
                    flag = False
    if flag:
        print('Yes')
    else:
        print('No')
    return


# Generated by 1.1.4 https://github.com/kyuridenamida/atcoder-tools  (tips: You use the default template now. You can remove this line by using your custom template)
def main():
    def iterate_tokens():
        for line in sys.stdin:
            for word in line.split():
                yield word
    tokens = iterate_tokens()
    H = int(next(tokens))  # type: int
    W = int(next(tokens))  # type: int
    s = [ next(tokens) for _ in range(W) ]  # type: "List[str]"
    solve(H, W, s)

if __name__ == '__main__':
    main()


### FIXED CODE ###

#!/usr/bin/env python3
import sys, math, fractions, itertools

YES = "Yes"  # type: str
NO = "No"  # type: str

def solve(H: int, W: int, s: "List[str]"):
    flag = True
    for h in range(H):
        for w in range(W):
            if s[h][w] == '#':
                if h == H-1: U = True
                else: U = s[h+1][w] != '#'
                if h == 0: D = True
                else: D = s[h-1][w] != '#'
                if w == 0: L = True
                else: L = s[h][w-1] != '#'
                if w == W-1: R = True
                else: R = s[h][w+1] != '#'
                if all([U, D, L, R]):
                    flag = False
    if flag:
        print('Yes')
    else:
        print('No')
    return


# Generated by 1.1.4 https://github.com/kyuridenamida/atcoder-tools  (tips: You use the default template now. You can remove this line by using your custom template)
def main():
    def iterate_tokens():
        for line in sys.stdin:
            for word in line.split():
                yield word
    tokens = iterate_tokens()
    H = int(next(tokens))  # type: int
    W = int(next(tokens))  # type: int
    s = [ next(tokens) for _ in range(H) ]  # type: "List[str]"
    solve(H, W, s)

if __name__ == '__main__':
    main()
# -*- coding: utf-8 -*-

s = list(input())
t = list(input())

slen = len(s)
tlen = len(t)

cand = []
for i in range(slen - tlen + 1):
    match = True
    for j in range(tlen):
        if s[i + j] == "?" or s[i + j] == t[j]:
            pass
        else:
            match = False
    if match:
        cand.append(i)

if len(cand) != 0:
    cand.reverse()
    ans = ""
    for i in range(slen):
        if not (cand[0] <= i <= cand[0] + tlen):
            if s[i] == "?":
                ans += "a"
            else:
                ans += s[i]
        else:
            ans += t[i - cand[0]]        
    print(ans)
else:
    print("UNRESTORABLE")

### FIXED CODE ###

S = list(input())
T = list(input())
LS = len(S)
LT = len(T)
a = ""
for i in reversed(range(LS - LT + 1)):
    for j in range(LT):
        if S[i + j] != T[j] and S[i + j] != "?":
            break
        if j == LT - 1:
            for k in range(LT):
                S[i + k] = T[k]
            #print("".join(S))
            s = str("".join(S)).replace("?", "a")
            print(s)
            exit()
# S = S.replace("?", "a")
print("UNRESTORABLE")
n,r=map(int,input().split())

if n=>10:
  print(r)
else:
  print(r+1000-100*n)


### FIXED CODE ###

n,r=map(int,input().split())

if n>=10:
  print(r)
else:
  print(r+1000-100*n)
A, B, C = map(int, input().split())
if A == B == C and A !==B !== C:
  print('No')
else:
  print('Yes') 

### FIXED CODE ###

A, B, C = map(int, input().split())
if A == B == C:
  print('No')
elif A != B and A != C and B != C:
  print('No')
else:
  print('Yes')
def how_many_times_divisible(n):
	ans = 0
	while n % 2 == 0:
		n /= 2
		ans += 1
	return ans
 
n = int(raw_input())
a = map(int, raw_input().split())
ans = min(map(how_many_times_divisible, a))
 
print ans

### FIXED CODE ###

string = input()
counter = 0
for ele in string:
    if ele == "1":
        counter += 1
print(counter)
N = int(input())
h = list(map(int, input().split()))

#大きな値
INF = 9999

# DPtable
dp = [INF]*9999

#初期条件
dp[0] = 0
dp[1] = abs(h[1]-h[0])

#ループ
for i in range(2, N):
    dp[i] = min(dp[i-1] + abs(h[i] - h[i-1]), dp[i-2] + abs(h[i]-h[i-2]))

print(dp[N-1])



### FIXED CODE ###

# N = int(input())
# h = list(map(int, input().split()))
# 
# #大きな値
# INF = 9999
# 
# # DPtable
# dp = [INF]*9999
# 
# #初期条件
# dp[0] = 0
# dp[1] = abs(h[1]-h[0])
# 
# #ループ
# for i in range(N):
#     if i == 0 or i == 1:
#         continue
#     else:
#         dp[i] = min(dp[i-1] + abs(h[i] - h[i-1]), dp[i-2] + abs(h[i]-h[i-2]))
# 
# print(dp[N-1])

N = int(input())
h = list(map(int, input().split()))
dp = [10 ** 10 for _ in range(N)]
dp[0] = 0
dp[1] = abs(h[1] - h[0])

for i in range(2, N):
    dp[i] = min(dp[i - 1] + abs(h[i] - h[i - 1]), dp[i - 2] + abs(h[i] - h[i - 2]))

print(dp[-1])
n_in = int(input()) 
l = [int(input()) for i in range(n_in)] 

p = l[0]
for i in range(1, len(l)):
    q = l[i]

    if p >= q:
        m = p
        n = q
    else:
        m = q
        n = p

    while True:
        mod_value = m % n

        if mod_value  == 0:
            break

        m = n
        n = mod_value

    p = int(p*q/n)

print(p)

### FIXED CODE ###

n_in = int(input()) 
t = [int(input()) for i in range(n_in)] 

p = t[0]
for i in range(1, len(t)):
    q = t[i]

    if p >= q:
        m, n = p, q
    else:
        m, n = q, p

    while True:
        mod_value = m % n
        if mod_value  == 0:
            break

        m = n
        n = mod_value

    p = p//n * q

print(p)
import collections

n = int(input())
a = list(map(int, input().split()))

c = collections.Counter(a)

ans = 0

for i in c.values():
    ans += i * (i - 1) // 2

for i in range(n):
    print(ans - c[a[i]] + 1)


### FIXED CODE ###

n, m = map(int, input().split())

a = (n * (n - 1)) // 2 + (m * (m - 1)) // 2

print(a)
n = int(input())
arr = list(map(int , input().split()))
s = sum(arr)
f = 1
if n == 0:
  if arr[0] != 1:
    print(-1)
    exit()
  else:
    print(1)
    exit()
elif a[0]!=0:
  print(-1)
  exit()
ans = 1
node = 1
for i in range(1,n+1):
  node=min(2*node, s)
  ans+=node
  node-=a[i]
  s-=a[i]
  if node < 0:
    print(-1)
  	f = 0
    exit()
if f: print(ans)

### FIXED CODE ###


from collections import defaultdict
from collections import OrderedDict
from collections import deque
from itertools import combinations
from itertools import permutations
import bisect,math,heapq
alphabet = "abcdefghijklmnopqrstuvwxyz"
n = int(input())
a= list(map(int , input().split()))
s = sum(a)
f = 1
if n == 0:
  if a[0] != 1:
    print(-1)
    exit()
  else:
    print(1)
    exit()
elif a[0]!=0:
  print(-1)
  exit()
ans = 1
node = 1
for i in range(1,n+1):
  node=min(2*node, s)
  ans+=node
  node-=a[i]
  s-=a[i]
  if node < 0:
    print(-1)	
    exit()
if f: print(ans)
print('bust' if sum(list(map,input().split()))>=22 else 'win')

### FIXED CODE ###

print('bust' if sum(list(map(int,input().split())))>=22 else 'win')
N, K, Q = input().split()
N = int(N)
K = int(K)
Q = int(Q)

A = []
for i in range(Q):
    A.append(int(input()))

people = []
for i in range(N):
    people.append(K-Q)

for i in A:
    people[i+1] += 1

for i in people:
    if i <= 0:
        print("No")
    else:
        print("Yes")


### FIXED CODE ###

N, K, Q = input().split()
N = int(N)
K = int(K)
Q = int(Q)

A = []
for i in range(Q):
    A.append(int(input()))

people = []
for i in range(N):
    people.append(K - Q)

for i in A:
    people[i-1] += 1

for i in people:
    if i <= 0:
        print("No")
    else:
        print("Yes")
A=int(input())
B=int(input())
C=int(input())
 
if A==5 and B==5 and C==7:
    print("YES")
elif A==5 and B==7 and C==5:
    print("YES")
elif A==7 and B==5 and C==5:
    print("YES")
else:
    print("NO")

### FIXED CODE ###

a, b, c = map(int, input().split())
if a * b * c == 5 * 7 * 5:
  print("YES")
else:
  print("NO")
N, M = map(int, input().split())
drink = []
cost = 0
count = 0
d_count = 0
rest = 0


for _ in range(N):
    Drink = list(map(int, input().split()))
    drink.append(Drink)
    drink.sort()

for i in range(N):
    cost += drink[i][0] * drink[i][1]
    d_count += drink[i][1]
    count += 1
    if d_count > M:
      break
      
cost -= drink[count-1][0] * drink[count-1][1]
d_count -= drink[count-1][1]
rest = M - d_count
cost += rest * drink[count-1][0]
print(cost)
    


### FIXED CODE ###

H, W = map(int, input().split())
h, w = map(int, input().split())

h2 = H - h
w2 = W - w

print(h2*w2)
n = map(int, input())
a = map(int, input())
if n % 500 < a:
    print("YES")
else:
    print("NO")

### FIXED CODE ###

n = int(input())
a = int(input())
if n % 500 <= a:
  print("Yes")
else:
  print("No")
a=int(input())
b=list(map(int,input().split()))
c=sum(b)
d=[(c-x)*x for x in b]
e=sum(d)
 print(e/2)

### FIXED CODE ###

a=int(input())
b=list(map(int,input().split()))
c=sum(b)
d=[(c-x)*x for x in b]
e=sum(d)
print(int(e/2))
#coding:utf-8
#1_3_C
from collections import deque
n = int(input())
ary = deque()
for i in range(n):
    cmd = input().split()
    if cmd[0] == "insert":
        ary.appendleft(cmd[1])
    elif cmd[0] == "delete":
        ary.remove(cmd[1])
    elif cmd[0] == "deleteFirst":
        ary.popleft()
    elif cmd[0] == "deleteLast":
        ary.pop()

print(" ".join(ary))

### FIXED CODE ###

#coding:utf-8
#1_3_C
from collections import deque
n = int(input())
q = deque()
for i in range(n):
    cmd = input().split()
    if cmd[0] == "insert":
        q.appendleft(cmd[1])
    elif cmd[0] == "delete":
        try:
            q.remove(cmd[1])
        except ValueError:
            pass
    elif cmd[0] == "deleteFirst":
        q.popleft()
    elif cmd[0] == "deleteLast":
        q.pop()

print(" ".join(q))
N,T=map(int,input().split())
ls=[int(input()) for _ in range(N)]
ans=10**18
for i in ls:
  if i[0] <= T:
    ans = min(ans,i[1])
if ans < 10**18:
  print(ans)
else:
  print('TLE')


### FIXED CODE ###

N,T=map(int,input().split())
ls=[list(map(int,input().split())) for _ in range(N)]
ans=10**18
for i in ls:
  if i[1] <= T:
    ans = min(ans,i[0])
if ans < 10**18:
  print(ans)
else:
  print('TLE')
a=int(input())
b=list(map(int,input().split()))
count=0
for i,j in enumerte(a,1):
  if i != j:
    count +=1

if count <= 2:
    print('YES')
else:
    print('NO')
  

### FIXED CODE ###

a=int(input())
b=list(map(int,input().split()))
count=0
for i,j in enumerate(b,1):
  if i != j:
    count +=1

if count <= 2:
    print('YES')
else:
    print('NO')
li = list(input())
line = []

for i in li:
  if i == "0":
    line.append("0")
  elif i == "1":
    line.append("1")
  else:
    line.pop(len(line) - 1)

print("".join(line))

### FIXED CODE ###

li = list(input())
line = []

for i in li:
  if i == "0":
    line.append("0")
  elif i == "1":
    line.append("1")
  else:
    if len(line) != 0:
      line.pop(len(line) - 1)

print("".join(line))
import sys
import itertools
input = sys.stdin.readline


def read_values():
    return map(int, input().split())


def read_list():
    return list(read_values())


def read_lists(N):
    return [read_list() for n in range(N)]


import math
def main():
    A, B = read_values()
    print(int(A * B / math.gcd(A, B)))



if __name__ == "__main__":
    main()


### FIXED CODE ###

import sys
import itertools
input = sys.stdin.readline


def read_values():
    return map(int, input().split())


def read_list():
    return list(read_values())


def read_lists(N):
    return [read_list() for n in range(N)]


import fractions
def main():
    A, B = read_values()
    print(int(A * B / fractions.gcd(A, B)))


if __name__ == "__main__":
    main()
import sys
import itertools
# import numpy as np
import time
import math
 
sys.setrecursionlimit(10 ** 7)
 
from collections import defaultdict
 
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

a, b, x = map(int, input().split())

v = a * a * b
s = x / a

import math
if x <= v / 2:
    # print(math.degrees(math.atan(2 * s / b / b)))
    print(90 - math.atan(2 * s / b / b) * 180 / math.pi)
else:
    print(90 - math.atan(a / (b - (2 * s / a - b))) * 180 / math.pi)



### FIXED CODE ###

import sys
import itertools
# import numpy as np
import time
import math
 
sys.setrecursionlimit(10 ** 7)
 
from collections import defaultdict
 
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

a, b, x = map(int, readline().split())

v = a * a * b
s = x / a

if x == v:
    print(0)
    exit()

if x <= v / 2:
    # print(math.degrees(math.atan(2 * s / b / b)))
    print(90 - math.degrees(math.atan(2 * x / a / b / b)))
else:
    print(90 - math.degrees(math.atan(a / (b - (2 * s / a - b)))))
n,m=[int(i) for i in input().split()]
x=[int(i) for i in input().split()]
x.sort()
a=[]
if m==1:
    print("0")
else:
    for i in range(m-1):
        a.append(x[i+1]-x[i])
    a.sort(reverse=True)
    if n==1:
        print(max(x)-min(x))
    else:
        result=0
        for i in range(n-1):
            result+=a[i]
        print(max(x)-min(x)-result)

### FIXED CODE ###

n,m=[int(i) for i in input().split()]
x=[int(i) for i in input().split()]
x.sort()
a=[]
if m==1 or n>=m:
    print("0")
else:
    for i in range(m-1):
        a.append(x[i+1]-x[i])
    a.sort(reverse=True)
    if n==1:
        print(max(x)-min(x))
    else:
        result=0
        for i in range(n-1):
            result+=a[i]
        print(max(x)-min(x)-result)
n, m = map(int, input().split())
edge = [[] for i in range(n)]
for i in range(m):
    a, b = map(int, input().split())
    a -= 1
    b -= 1
    edge[a].append(b)
    edge[b].append(a)
# -1 → 0,1に塗っていきます
color=[-1 for i in range(n)]
def dfs(pos):
    ret = True
    for i in range(len(edge[pos])):
        to = edge[pos][i]
        if color[to] == -1:
            color[to] = 1 ^ color[pos]
            ret &= dfs(to)
        else:
            ret &= color[to]==color[pos]
    return ret

color[0]=0
if dfs(0):
    print(color)
    black, white = 0, 0
    for i in range(n):
        if color[i]==0:
            black += 1
        else:
            white += 1
    print(black*white-m)
else:
    print(n*(n-1)//2-m)

### FIXED CODE ###

import sys
sys.setrecursionlimit(10**8)
n, m = map(int, input().split())
edge = [[] for i in range(n)]
for i in range(m):
    a, b = map(int, input().split())
    a -= 1
    b -= 1
    edge[a].append(b)
    edge[b].append(a)
# -1 → 0,1に塗っていきます
color=[-1 for i in range(n)]
def dfs(pos):
    ret = True
    for i in range(len(edge[pos])):
        to = edge[pos][i]
        if color[to] == -1:
            color[to] = 1 ^ color[pos]
            ret &= dfs(to)
        else:
            ret &= not (color[to]==color[pos])
    return ret

color[0]=0
if dfs(0):
    black, white = 0, 0
    for i in range(n):
        if color[i]==0:
            black += 1
        else:
            white += 1
    print(black*white-m)
else:
    print(n*(n-1)//2-m)
N, K = map(int, input().split())
import math

l = []
for i in range(K):
  a = math.factorial(N-K+1)/(math.factorial(N-K-i)*math.factorial(i+1))
  b = math.factorial(K-1)/(math.factorial(K-1-i)*math.factorial(i))
  ans = int(a)*int(b)
  l.append(int(ans))

for j in l:
  print(j%(10^9+7))


### FIXED CODE ###

N, K = map(int, input().split())
import math
mod =10**9+7

l = []
l.append(N-K+1)
for i in range(1, K):
  a = l[i-1] * (N-K-i+1) * (K-i) // ((i+1)*i)
  l.append(int(a))

for j in l:
  print(j%mod)
n=int(input())
number=[int(x) for x in input().split()]

for numb in number:
  sum *= numb
if(sum > pow(10,18)):
	print(-1)
else:
  print(sum)

### FIXED CODE ###

a,b=(int(x) for x in input().split())
print(a*b)
def main():
  for i,n in enumerate(list(map(int,input().split()))):
  	if n == 0:
    	return i + 1

if __name__ == '__main__':
  main()

### FIXED CODE ###

def main():
  nums = list(map(int,input().split()))
  for i,n in enumerate(nums):
    if n == 0:
      return i + 1

if __name__ == '__main__':
  print(main())
#coding:UTF-8
s = input()
print(s[0] + (len(s)-2) + s[-1])


### FIXED CODE ###

#coding:UTF-8
s = input()
print(s[0] + str(len(s)-2) + s[-1])
N, D = int(input())
x = [list(map(int, input().split())) for _ in range(N)]
# for _ in range でリストを何行にもわたって書ける
s = 0
for i in range(N - 1) :
    for j in range(i + 1, N) :
        length' = 0.0
        for d in range(D) :
            length' += (x[i][d] - x[j][d]) ** 2
        length = length' ** (1/2)
        if length.is_integer() :
        # 整数かどうか判定
            s += 1
print(s)


### FIXED CODE ###

N, D = map(int, input().split())
x = [list(map(int, input().split())) for _ in range(N)]
s = 0
for i in range(N - 1) :
    for j in range(i + 1, N) :
        l = 0.0
        for d in range(D) :
            l += (x[i][d] - x[j][d]) ** 2
        length = l ** (1/2)
        if length.is_integer() :
            s += 1
print(s)
a,b,c=map(int,input.split())
print(c-a+b)

### FIXED CODE ###

a, b, c=map(int,input().split())
x = min(a-b,c)
print(c-x)
input_lines = input().split()
N = int(input_lines[0])
M = int(input_lines[1])
S = input()
T = input()

def gcd(a, b):
  while b > 0:
    a, b = b, a%b
  return a

def lcm(a, b):
  return a*b/gcd(a, b)

L = int(lcm(N,M))
x = 1
count = 0
if N >= M:
    big = N
    small = M
else:
    big = M
    small = N
    
while True:
    k = L*x
    flag = 1
    left = 0
    right = big - 1
    for j in range(small):
        while left <= right:
            mid = (left+right)/2
            if((mid-1)*k/big+1 == (j-1)*k/small+1):
                if(S[mid-1] != T[j-1]):
                    flag = 0
                    count += 1
                    break
            elif((mid-1)*k/big+1 == (j-1)*k/small+1):
                right = mid - 1
            else:
                left = mid + 1
    if(flag == 1):
        print(k)
        break
    if(count == 2):
        print(-1)
        break
    x += 1


### FIXED CODE ###

input_lines = input().split()
N = int(input_lines[0])
M = int(input_lines[1])
S = input()
T = input()

def gcd(a, b):
  while b > 0:
    a, b = b, a%b
  return a

def lcm(a, b):
  return a*b/gcd(a, b)

L = int(lcm(N,M))
x = 1
count = 0
while True:
    k = L*x
    flag = 1
    starti = 0
    startj = 0
    for i in range(starti, N):
        for j in range(startj, M):
            hoge = i*k/N+1
            fuga = j*k/M+1
            if(hoge < fuga):
                startj = j - 1
                break
            elif(hoge == fuga):
                if(S[i] != T[j]):
                    flag = 0
                    count += 1
                    break
        if(flag == 0):
            break
    if(flag == 1):
        print(k)
        break
    if(count == 2):
        print(-1)
        break
    x += 1
s = map(list,input())
b = [ABC]
r = [ARC]
if s == b:
  print('ARC')
elif r == b:
  print('ABC')
 

### FIXED CODE ###

s = list(input())
if s[1] == 'B':
  print('ARC')
elif s[1] == 'R':
  print('ABC')
n = int(input())
a_b_list = [list(map(int,input().split())) for x in range(n)]
a_b_list_kai = [[int(a_b_list[x]),int(a_b_list[x+1])] for x in range(0,n*2,2)]
sorted(a_b_list_kai,key = lambda x:x[1])
limit = 0
result = 0
sum_task = 0
for x in a_b_list_kai:
    sum_task += x[0]
    limit = max(limit,x[1])
    if sum_task > limit:
        result = 1

if result == 1:
    print('No')
else:
    print('Yes')

### FIXED CODE ###

n = int(input())
a_b_list_kai = [list(map(int,input().split())) for x in range(n)]

a_b_list_kai = sorted(a_b_list_kai,key = lambda x:x[1])
limit = 0
result = 0
sum_task = 0
for x in a_b_list_kai:
    sum_task += x[0]
    limit = max(limit,x[1])
    if sum_task > limit:
        result = 1

if result == 1:
    print('No')
else:
    print('Yes')
from numba import jit

@jit(cache = True)
def solve(i,j,a):
    k=False
    sc=0
    for c in a:
        if c>j:
            break
        elif c>j//2 and c<j:
            continue
        elif c==j:
            sc+=1
            if sc>=2:
                k=True
                break
        else:
            if j%c==0:
                k=True
                break
    return k

n=int(input())
a=sorted(list(map(int,input().split())))
ans=0
for i,j in enumerate(a):
    if solve(i,j,a):
        continue
    else:
        ans+=1
print(ans)

### FIXED CODE ###

x=list(map(int,input().split()))
for i,j in enumerate(x):
	if j==0:
		print(i+1)
		break
a = list(map(int,input().split()))
b = list(map(int,input().split()))
b.sort()

c = []
if len(b) != 0:
  for i in range(len(b) - 1):
    c.append(b[i+1] - b[i])

if len(b) == 0:
  print(1)
  
    
else:  
  for j in range(min(a[0] - 1,a[1]):
    for k in range(len(c)):
      if c[k] == max(c):
        c[k] = 0

  print(sum(c))

### FIXED CODE ###

# coding: utf-8
# Your code here!
a = list(map(int,input().split()))
b = list(map(int,input().split()))
b.sort()

c = []
if len(b) != 1:
  for i in range(len(b) - 1):
    c.append(b[i+1] - b[i])

if len(b) == 1:
  print(0)
  
    
else:  
  c.sort()
  for j in range(min(a[0] - 1,a[1])):
    c[len(c)- 1 - j] = 0
  print(sum(c))
N, K = list(map(int,input().split()))
move_list = list(map(int,input().split()))
 
  
test = 1
find_f = {}
for i in range(N):
  find_f[i+1]=[]
 
find_f[1].append(0)
for i in range(K):
  test = move_list[test-1]
  find_f[test].append(i+1)
  if len(find_f[test]) == 2 and find_f[test][1]-find_f[test][0]<=1000:
    state ,f = test, find_f[test]
    break
  
K = K-f[0]
f = f[1]-f[0]
remain = K%f
 
for i in range(remain):
  state = move_list[state-1]
  
print(state)
#state = 1

### FIXED CODE ###

N, K = list(map(int,input().split()))
move_list = list(map(int,input().split()))
 
  
test = 1
find_f = {}
for i in range(N):
  find_f[i+1]=[]
 
find_f[1].append(0)
for i in range(K):
  test = move_list[test-1]
  find_f[test].append(i+1)
  if len(find_f[test]) == 2 and find_f[test][1]-find_f[test][0]<=1000000:
    state ,f = test, find_f[test]
    break
try:
  K = K-f[0]
  f = f[1]-f[0]
  remain = K%f
  for i in range(remain):
    state = move_list[state-1]
 
  print(state)
except:
  print(test)
#state = 1
N,K=input().split()
D=input().split()

while True:
    for s in D:
        if N.count(s)!=0:
            frag=1

        else:
            pass
    if frag==1:
        a=int(N)+1
        N=str(a)
        frag=0

    else:
        break

print(N)          

### FIXED CODE ###

N,K=input().split()
D=input().split()
frag=0

while True:
    for s in D:
        if N.count(s)!=0:
            frag=1

        else:
            pass
    if frag==1:
        a=int(N)+1
        N=str(a)

    else:
        break

    frag=0

print(N)
A = int(input())
B = int(input())

import sys
if len(str(A))>len(str(B)):
    print('GREATER')
    sys.exit()
elif len(str(A))<len(str(B)):
    print('LESS')
    sys.exit()
else:
    for a,b in zip(A,B):
        if a>b:
            print('GREATER')
            sys.exit()
        elif a<b:
            print('LESS')
            sys.exit()
print('EQUAL')

### FIXED CODE ###

A = input()
B = input()

import sys
if len(A)>len(B):
    print('GREATER')
    sys.exit()
elif len(A)<len(B):
    print('LESS')
    sys.exit()
else:
    for a,b in zip(A,B):
        if int(a)>int(b):
            print('GREATER')
            sys.exit()
        elif int(a)<int(b):
            print('LESS')
            sys.exit()
print('EQUAL')
import math
n,x = tuple(map(int,input().split()))

m = []

for i in range(n):
    cost = int(input())
    x -= cost
    m.append(cost)


print(math.floor(x/min(m))+n)

### FIXED CODE ###

s = input()
total = 700
for char in s:
    if char == "o":
        total += 100

print(total)
n,l=map(int,input().split())

x=[l+i-1 for i in range(1,n+1)]

min_val=None
idx=0
for i in x:
  if min_val is None or abs(l+i-1) < min_val:
    min_val=abs(l+i-1)
    idx=i-1

x.pop(idx)
print(sum(x))

### FIXED CODE ###

n,l=map(int,input().split())

x=[l+i-1 for i in range(1,n+1)]
min_val=None
idx=0
for i in range(1,n+1):
  tmp=abs(l+i-1)
  if min_val is None or tmp < min_val:
    min_val=tmp
    idx=i-1

x.pop(idx)
print(sum(x))