Harryxun/stf_run huggingface dataset:
def main():
    a,b = map(int, input().split())
  if (a*b) % 2== 1:
      print("Yes")
  else:
      print('No')
 
 
 
if __name__ == '__main__' :
    main()

### FIXED CODE ###

import sys

def odd_def(num):
    if num % 2 == 0:
        return False
    else:
        return True

def main():
    a,b = map(int, input().split())
    for c in range(1,4):
        mal = a*b*c
        if odd_def(mal):
            print('Yes')
            sys.exit()
    print('No')


if __name__ == '__main__' :
    main()
N, M = map(int, input().split())
AB = [list(map(int, input().split())) for i in range(M)]

connect_list = [set() for _ in range(N)]    #繋がっているリスト
ranking = [set() for _ in range(N)]     #入口に近い順
ranked_set = set()
full_set = {i for i in range(1, N+1)}
root_list = [0]*N
root_list[0] = "Yes"


def do_ranking(now_set):
    global connect_list, root_list
    if len(now_set) == 0:
        return 0
    next_set = set()
    for j in list(now_set):
        for i in list(connect_list[j-1]):
            if root_list[i-1] == 0:
                root_list[i-1] = j
                next_set.add(i)
    do_ranking(next_set)


for A, B in AB:
    connect_list[A-1].add(B)
    connect_list[B-1].add(A)
for i in list(connect_list[0]):
    root_list[i-1] = 1
do_ranking(connect_list[0])   #道しるべ作成

for i in root_list:
    print(i)

### FIXED CODE ###

N, M = map(int, input().split())
connect_list = [set() for _ in range(N)]    #繋がっているリスト
for _ in range(M):
    A, B = map(int, input().split())
    connect_list[A-1].add(B)
    connect_list[B-1].add(A)

root_list = [0]*N
root_list[0] = "Yes"

for i in list(connect_list[0]):
    root_list[i-1] = 1
now_set = connect_list[0]
while len(now_set) != 0:
    for j in list(now_set):
        for i in list(connect_list[j-1]):
            if root_list[i-1] == 0:
                root_list[i-1] = j
                now_set.add(i)
        now_set.remove(j)

for i in root_list:
    print(i)
s = input()
cnt = 0
 
for i in s:
  if i = '+':
    cnt = cnt +1
  elif i = '-':
    cnt = cnt-1
 
print(cnt)

### FIXED CODE ###

s = input()
cnt = 0
 
for i in s:
  if i == '+':
    cnt = cnt +1
  elif i == '-':
    cnt = cnt-1
 
print(cnt)
a,b,c=[int(input())for i in range(3)]
a-=b
a%=c
    print(a)


### FIXED CODE ###

x,a,b = [int(input()) for i in range(3)]
print((x-a)%b)
import math 

n = input()
if n <= 81:
  m = int(math.sqrt(n))
  while True:
    if n % m == 0:
      print("Yes")
      break
    else:
      m += 1
      if m >= 10:
        print("No")
        break
else:
  print("No")


### FIXED CODE ###

import math 
 
n = int(input())
if n <= 81:
  m = int(round(math.sqrt(n)))
  while True:
    if n % m == 0:
      print("Yes")
      break
    else:
      m += 1
      if m >= 10:
        print("No")
        break
else:
  print("No")
A, B, C, D, E, F = [int(x) for x in input().split()]
a_water = 0
a_sugar = 0
a_conc = 0
max_conc = 100 * E / (100 + E)
for i in range(F//(100*A) + 1):
    for j in range(F//(100*B) + 1):
        water = i * 100 * A + j * 100 * B
        ms = E * water
        for k in range(ms//C + 1):
            for l in range(ms//D + 1):
                sugar = k * C + l * D
                conc = 100 * sugar / (water + sugar) if water + sugar > 0 else 0
                if water + sugar <= F and conc <= max_conc and a_conc < conc:
                    a_water = water
                    a_sugar = sugar
                    a_conc = conc
                else:
                    pass
print(a_water + a_sugar, a_sugar)


### FIXED CODE ###

N = int(input())
A = int(input())
print(N*N - A)
def main():
    from collections import defaultdict,deque
    from math import ceil
    INF = 10**20
    f = lambda :map(int,input().split())
    n,u,v = f() # u:高橋
    edge = defaultdict(list)
    for i in range(n-1):
        a,b = f()
        edge[a].append(b)
        edge[b].append(a)
    
    distance = [[-1]*2 for _ in range(n+1)]
    distance[u][0] = 0
    distance[v][1] = 0
    def dfs(parent, start):
        distance_parent = distance[parent][start]
        for child in edge[parent]:
            if distance[child][start] == -1:
                distance[child][start] = distance_parent + 1
                dfs(child, start)
    dfs(u,0)
    dfs(v,1)
    ans = 0
    for u_d, v_d in distance:
        if u_d < v_d:
            ans = max(ans,v_d)
    print(ans-1)


        


main()
        



                
        
        
        
        
        



    


### FIXED CODE ###

def main():
    from collections import defaultdict,deque
    from math import ceil
    from sys import setrecursionlimit
    setrecursionlimit(10**6)
    f = lambda :map(int,input().split())
    n,u,v = f() # u:高橋
    edge = defaultdict(list)
    for i in range(n-1):
        a,b = f()
        edge[a].append(b)
        edge[b].append(a)
    
    distance = [[-1]*2 for _ in range(n+1)]
    distance[u][0] = 0
    distance[v][1] = 0
    def dfs(node,start):
        targets = deque([node])
        while targets:
            parent = targets.popleft()
            distance_parent = distance[parent][start]
            for child in edge[parent]:
                if distance[child][start] == -1:
                    distance[child][start] = distance_parent + 1
                    targets.append(child)
    dfs(u,0)
    dfs(v,1)
    ans = 0
    for u_d, v_d in distance:
        if u_d < v_d:
            ans = max(ans,v_d)
    print(ans-1)


        


main()
import sys

x, n = map(int, input().split())
p = list(map(int, input().split()))
list_p = [i for i in range(-1, 102)] 
t = x
num = x

if(x == n):
  print(x - 1)
  sys.exit()

for i in p:
  list_p[i + 1] = -2

for i in range(len(list_p)):
  if(list_p[i] == -2):
    continue
  else:
    if(abs(list_p[i] - x) <= t):
      if(abs(list_p[i] - x) != t):
        t = abs(list_p[i] - x)
        num = list_p[i]
      elif:
        t = abs(list_p[i] - x):
        num = min(num, list_p[i])

print(num) 


### FIXED CODE ###

import sys

x, n = map(int, input().split())
p = list(map(int, input().split()))
list_p = [i for i in range(-1, 102)] 
t = x
num = x

for i in p:
  list_p[i + 1] = -2

for i in range(len(list_p)):
  if(list_p[i] == -2):
    continue
  else:
    if(abs(list_p[i] - x) <= t):
      if(abs(list_p[i] - x) < t):
        t = abs(list_p[i] - x)
        num = list_p[i]
      elif(abs(list_p[i] - x) == t):
        t = abs(list_p[i] - x)
        num = min(num, list_p[i])
print(num)
# -*- coding: utf-8 -*-
import sys
from collections import defaultdict,deque

H,W=map(int, sys.stdin.readline().split())
CH,CW=map(int, sys.stdin.readline().split())
CH-=1
CW-=1
DH,DW=map(int, sys.stdin.readline().split())
DH-=1
DW-=1
S=[ sys.stdin.readline().strip() for _ in range(W) ]

D=[(0,1),(0,-1),(1,0),(-1,0)]
WARP=[]
for dh in range(-2,3):
    for dw in range(-2,3):
        if abs(dh)+abs(dw)<=1: continue
        WARP.append((dh,dw))

visit=defaultdict(lambda: 0) #未訪問:0 訪問済み:1
d=defaultdict(lambda: float("inf"))

q=deque()
q.append((CH,CW))
visit[(CH,CW)]=1
d[(CH,CW)]=0

while q:
    fro_h, fro_w=q.popleft()
    #歩いて移動
    for dh,dw in D:
        to_h, to_w=fro_h+dh, fro_w+dw
        if 0<=to_h<H and 0<=to_w<W:
            if S[to_h][to_w]=="." and visit[(to_h, to_w)]==0:
                visit[(to_h, to_w)]=1
                d[(to_h, to_w)]=d[(fro_h, fro_w)]+0
                q.appendleft((to_h, to_w))
    #ワープ
    for dh,dw in WARP:
        to_h, to_w=fro_h+dh, fro_w+dw
        if 0<=to_h<H and 0<=to_w<W:
            if S[to_h][to_w]=="." and visit[(to_h, to_w)]==0:
                visit[(to_h, to_w)]=1
                d[(to_h, to_w)]=d[(fro_h, fro_w)]+1
                q.appendleft((to_h, to_w))

if d[(DH,DW)]==float("inf"):
    print -1
else:
    print d[(DH,DW)]


### FIXED CODE ###

# -*- coding: utf-8 -*-
import sys
from collections import defaultdict, deque

H,W=map(int, sys.stdin.readline().split())
CH,CW=map(int, sys.stdin.readline().split())
CH-=1
CW-=1
DH,DW=map(int, sys.stdin.readline().split())
DH-=1
DW-=1
S=[ sys.stdin.readline().strip() for _ in range(H) ]

D=[(0,1),(0,-1),(1,0),(-1,0)]
WARP=[]
for dh in range(-2,3):
    for dw in range(-2,3):
        if abs(dh)+abs(dw)<=1: continue
        WARP.append((dh,dw))

d=defaultdict(lambda: float("inf")) #スタート地点から各マスまでの距離

q=deque()
q.append((0,CH,CW))
d[(CH,CW)]=0

while q:
    kyori, fro_h, fro_w=q.popleft()
    if d[(fro_h, fro_w)]<kyori: continue
    #歩いて移動
    for dh,dw in D:
        to_h, to_w=fro_h+dh, fro_w+dw
        if 0<=to_h<H and 0<=to_w<W and S[to_h][to_w]==".":
            if kyori < d[(to_h, to_w)]:
                d[(to_h, to_w)]=kyori
                q.appendleft((kyori, to_h, to_w))
    #ワープ
    for dh,dw in WARP:
        to_h, to_w=fro_h+dh, fro_w+dw
        if 0<=to_h<H and 0<=to_w<W and S[to_h][to_w]==".":
            if kyori+1 < d[(to_h, to_w)]:
                d[(to_h, to_w)]=kyori+1
                q.append((kyori+1, to_h, to_w))

if d[(DH,DW)]==float("inf"):
    print -1
else:
    print d[(DH,DW)]
from decimal import Decimal

X=int(input())
ansa=0
ansb=0
for b in range(100):
    a5 = b**5 + X
    sig = False
    if a5 < 0:
        sig = True
        a5 = abs(a5)
    a1 = Decimal.power(a5,1/5)

    if sig:
        a1 *= -1

    if a1 == int(a1):
        ansa=int(a1)
        ansb=b
        break
if ansa >0 or ansb>0:
    print(ansa,ansb)
    exit()

# X=int(input())
# X.as
# ansa=0
# ansb=0
# for a in range(100):
#     b5 = a**5 - X
#     sig = False
#     if a==100:
#         print()
#     if b5 < 0:
#         sig = True
#         b5 = abs(b5)
#     b1 = pow(b5,1/5)

#     if sig:
#         b1 *= -1

#     if b1 == int(b1):
#         ansa=a
#         ansb=int(b1)
#         break
# if ansa >0 or ansb>0:
#     print(ansa,ansb)
#     exit()


### FIXED CODE ###

from decimal import Decimal

X=Decimal(input())
ansa=0
ansb=0
# for b in range(1000):
#     a5 = Decimal(b**5) + X
#     sig = False
#     if a5 < 0:
#         sig = True
#         a5 = abs(a5)
#     a1 = pow(a5,Decimal('0.2'))

#     if sig:
#         a1 *= -1

#     if a1 == int(a1):
#         ansa=int(a1)
#         ansb=b
#         break
# if ansa >0 or ansb>0:
#     print(ansa,ansb)
#     exit()

for a in range(-1000,1000):
    b5 = Decimal(a**5) - X
    sig = False
    if a==100:
        print()
    if b5 < 0:
        sig = True
        b5 = abs(b5)
    b1 = pow(b5,Decimal('0.2'))

    if sig:
        b1 *= -1

    if b1 == int(b1):
        ansa=a
        ansb=int(b1)
        break
print(ansa,ansb)
x,n=map(int, input().split())
ans=x
judge=True
if(n!=0):
  p=list(map(int, input().split()))
else:
  ans=x
  judge=False

if(judge):
  check=True
  s_list=[]
  l_list=[]
  for i in range(n):
    for j in range(n):
      if(x-i==p[j]):
        check=False
    if(check):
      s_list.append(x-i)
    check=True

    for i in range(n):
      for j in range(n):
        if(x+i==p[j]):
          check=False
      if(check):
        l_list.append(x+i)
      check=True
    if(l_list == []):
      ans = max(s_list)
    if(s_list == []):
      ans = min(l_list)
    else:
      if(abs(x-min(l_list)) > abs(x-max(s_list))):
        ans = max(s_list)
      elif(abs(x-min(l_list))==abs(x-max(s_list))):
        ans=max(s_list)
      else:
        ans=min(l_list)  

print(ans)

### FIXED CODE ###

x,n=map(int, input().split())
ans=x
judge=True
if(n!=0):
  p=list(map(int, input().split()))
else:
  ans=x
  judge=False
  
if(n==1):
  if(x==p[0]):
    ans = x-1
    judge=False

if(judge):
  check=True
  s_list=[]
  l_list=[]
  for i in range(n):
    for j in range(n):
      if(x-i==p[j]):
        check=False
    if(check):
      s_list.append(x-i)
    check=True

    for i in range(n):
      for j in range(n):
        if(x+i==p[j]):
          check=False
      if(check):
        l_list.append(x+i)
      check=True
    if(l_list == []):
      ans = max(s_list)
    if(s_list == []):
      ans = min(l_list)
    else:
      if(abs(x-min(l_list)) > abs(x-max(s_list))):
        ans = max(s_list)
      elif(abs(x-min(l_list))==abs(x-max(s_list))):
        ans=max(s_list)
      else:
        ans=min(l_list)  

print(ans)
a,b=map(int,input().split())
c=list(map(int,input().split()))
d=-1
if len(c)<=b:
    print(0)
else:
    c.sort()
    for i in range(-1,-b-1,-1):
        c.pop(i)
        d-=1
    print(sum(c))


### FIXED CODE ###

N, K = map(int, input().split())
H = list(map(int, input().split()))
H.sort()

if N - K < 0:
  print(0)
else:
  print(sum(H[:N-K]))
from fractions import gcd

MOD = 1000000000 + 7

N = int(input())
A = list(map(int, input().split()))

def lcm(x, y):
    return (x * y) // gcd(x, y)

l = 1
ans = 0
for a in A:
    g = gcd(a, l)
    ans = ((ans * a) // g) % MOD
    l = lcm(l, a)
    ans = (ans + (l / a) % MOD) % MOD
print(int(ans))

### FIXED CODE ###

from fractions import gcd

MOD = 1000000000 + 7

N = int(input())
A = list(map(int, input().split()))

l = 1
ans = 0
for a in A:
    g = gcd(a, l)
    l = (l // g) * a
    ans = (ans * (a // g)) % MOD
    ans = (ans + (l // a)) % MOD
print(int(ans))
import numpy as np
N=int(input())
A=list(map(int,input().split()))
B_=list(map(lambda x: 2*x,A))
A=np.eye(N,N,1)+np.eye(N,N)
A[N-1][0]=1

x=np.linalg.solve(A, B_)
x=list(map(int,list(x)))

for x_ in x:
    print(x_, end=' ')
print()

### FIXED CODE ###

N=int(input())
A=list(map(int,input().split()))
tmp=0
fugo=-1
ans=[]
for i in range(N):
    fugo*=-1
    tmp+=fugo*A[i]
ans.append(tmp)

for i in range(N-1):
    x=ans[i%N]
    ans.append(2*A[i%N]-x)

for x in ans:
    print(x, end=' ')
print()
W,H,x,y,r = input().split()
w = int()
H = int()
x = int()
y = int()
r = int()
if x+r <= W and x -r>0:
    print("Yes")
else:
    print("No")


### FIXED CODE ###

w,h,x,y,r = input().split()
w = int(w)
h = int(h)
x = int(x)
y = int(y)
r = int(r)
if x - r >= 0 and y - r >= 0 and x + r <= w and y + r <= h:
    print("Yes")
else:
    print("No")
N =int(input())
A = list(map(int,input().split()))

def make_divisors(n):
    divisors = []
    for i in range(1, int(n**0.5)+1):
        if n % i == 0:
            divisors.append(i)
            if i != n // i:
                divisors.append(n//i)

    # divisors.sort()
    return divisors

A = sorted(A)

dicts = {}

if len(A) <=2:
    for i in A:
        for num in make_divisors(i):
            if num in dicts:
                dicts[num]+=1
            else:
                dicts[num]=1
    max_value=0
    for k,v in dicts.items():
        if v>=N-1 and max_value<k:
            max_value=k

    print(max_value)
else:
    for i in range(3):
        for num in make_divisors(A[i]):
            if num in dicts:
                dicts[num]+=1
            else:
                dicts[num]=1
    
    #
    new_list=[]
    for k,v in dicts.items():
        if v>=2:
            new_list.append(k)
    new_set=set(new_list)
    for i in range(3,len(A)):
        for num in new_set:
            if A[i]%num!=0:
                new_set-=set([num])
    print(max(new_set))

### FIXED CODE ###

N =int(input())
A = list(map(int,input().split()))

def make_divisors(n):
    divisors = []
    for i in range(1, int(n**0.5)+1):
        if n % i == 0:
            divisors.append(i)
            if i != n // i:
                divisors.append(n//i)

    # divisors.sort()
    return divisors

A = sorted(A)
from collections import Counter
check = Counter(A)
for c,k in check.items():
    if k>=N-1:
        A=[c]



def del_dicts(dicts,i):
    del_list=[]
    for k,v in dicts.items():
        if v<i:
            del_list.append(k)
    for d in del_list:
        del dicts[d]
    return dicts

dicts = {}

for i in range(len(A)):
    if i<=2:
        for num in make_divisors(A[i]):
            if num in dicts:
                dicts[num]+=1
            else:
                dicts[num]=1
    
    else:
        del_list=[]
        
        for k in dicts.keys():
            if A[i]%k == 0:
                dicts[k]+=1
    dicts = del_dicts(dicts,i)
print(max(dicts.keys()))
s=list(input())
ans=0
for i in range(len(s)):
  ans+=s[i]
  ans%=9
if ans==0:
  print("Yes")
else:
  print("No")

### FIXED CODE ###

s=list(input())
ans=0
for i in range(len(s)):
  ans+=int(s[i])
  ans%=9
if ans==0:
  print("Yes")
else:
  print("No")
def main():

    N = int(input())
    A = []
    for _ in range(N):
        A.append(int(input()))

    # print(A)
    pairs = 0
    for i in range(N-1):
        pairs += min(A[i], A[i+1])
        A[i], A[i+1] = A[i]-min(A[i], A[i+1]), A[i+1]-min(A[i], A[i+1])
        pairs += A[i] // 2
    pairs += A[i+1] // 2

    return pairs

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

### FIXED CODE ###

def main():

    N = int(input())
    A = []
    for _ in range(N):
        A.append(int(input()))

    # print(A)
    pairs = 0
    for i in range(N-1):
        pairs += A[i] // 2
        A[i] = A[i] % 2
        pairs += min(A[i], A[i+1])
        A[i], A[i+1] = A[i]-min(A[i], A[i+1]), A[i+1]-min(A[i], A[i+1])
    pairs += A[N-1] // 2

    return pairs

if __name__ == '__main__':
    print(main())
n = input()
int i
while True:
  if i == n:
    break
  a[i] = input().split
  a[i] = a[n-i]
  print(a[i])


### FIXED CODE ###

n = int(input())
l = list(map(int,input().split()))
l.reverse()
print(' '.join(map(str,l)))
N = int(input())
B = list(map(int,input().split()))
A = []



for i in range(len(B)):

    if i == 0:
        if len(B)==1 or B[i]<=B[i+1]:

            A.extend(B[:1]*2)

        elif B[i]>B[i+1]:

            A.extend(B[1:2]*2)

            
    if 0 < i < len(B):

        if B[i]<B[i+1]:


            A.append(B[i])

        elif B[i]>=B[i+1]:

            A.append(B[i+1])

    if i!=0 and i==len(B)-1:

        A.append(B[i])
            
        
from functools import reduce

print(reduce(lambda x,y : x+y,A))


### FIXED CODE ###

N=int(input())
B=list(map(int,input().split()))

mx = 0

for i in range(len(B)):

    if i==0 :

        if len(B)==1 :

            mx += B[0]*2

        else:

            if B[i] > B[i+1]:

                mx += B[i]+B[i+1]

            else:

                mx += B[i]*2

    elif i>0 :

        if i != len(B)-1:

            if B[i] < B[i+1]:

                mx += B[i]

            elif B[i] >= B[i+1]:

                mx += B[i+1]

        elif i == len(B)-1:

            mx += B[i]

print(mx)
N=int(input())
ans=N*800-(N-N%15)*200/15
print ans

### FIXED CODE ###

N=int(input())
ans=N*800-(N-N%15)*200/15
print(int(ans))
num_val = str(input())

if num_val[len(num_val) - 1] in ['2', '4', '5', '7', '9']:
  print('hon')
  elif num_val[len(num_val) - 1] in ['0', '1', '6', '8']:
    print('pon')
    elif num_val[len(num_val) - 1] in ['3']:
      print('bon')

### FIXED CODE ###

num_val = str(input())

if num_val[len(num_val) - 1] in ['2', '4', '5', '7', '9']:
    print('hon')
elif num_val[len(num_val) - 1] in ['0', '1', '6', '8']:
    print('pon')
elif num_val[len(num_val) - 1] in ['3']:
    print('bon')
x, y = map(int, input().split())
for i in range(0, 10001):
    if x == 0 && y == 0:
        break
    if x > y:
        temp = int(x)
        x = y
        y = temp
    print(f'{x} {y}')



### FIXED CODE ###

for i in range(0, 10001):
    x, y = map(int, input().split())
    if x == 0 and y == 0:
        break
    if x > y:
        temp = int(x)
        x = y
        y = temp
    print(f'{x} {y}')
N = int(input())

G = []
for i in range(N):
    G.append([])

color = [None] * N

for i in range(N-1):
    u, v, w = list(map(int, input().split()))
    G[u-1].append([v-1, w])
    G[v-1].append([u-1, w])

# for i in range(N):
#     print(G[i])

def dfs(v, c):
    color[v] = c

    # vと隣接する点
    for p, d in G[v]:
        # 訪問済み
        if color[p] is not None:
            continue
        if d % 2 == 0:
            dfs(p, c)
        else:
            dfs(p, c ^ 1)  # 排他的論理和で0, 1をひっくり返す

# 0の頂点を0で塗る
dfs(0, 0)

# print(color)
for col in color:
    print(col)

### FIXED CODE ###

import sys
sys.setrecursionlimit(10 ** 6)

N = int(input())

G = []
for i in range(N):
    G.append([])

color = [None] * N

for i in range(N-1):
    u, v, w = list(map(int, input().split()))
    G[u-1].append([v-1, w])
    G[v-1].append([u-1, w])

# for i in range(N):
#     print(G[i])

def dfs(v, c):
    color[v] = c

    # vと隣接する点
    for p, d in G[v]:
        # 訪問済み
        if color[p] is not None:
            continue
        if d % 2 == 0:
            dfs(p, c)
        else:
            dfs(p, c ^ 1)  # 排他的論理和で0, 1をひっくり返す

# 0の頂点を0で塗る
dfs(0, 0)

# print(color)
for col in color:
    print(col)
n = int(input())
h = list(map(int, input().split()))
num = 0
now = 0
ans = []

for i in range(n-1):
    now = h[i]
    for j in range(i+1, n):
      if now >= h[j]:
        now = h[j]
        num += 1
      else:
        continue
    ans.append(num)
    num = 0

print(max(ans))

### FIXED CODE ###

n = int(input())
h = list(map(int, input().split()))
ans = []

for i in range(n-1):
    if h[i]>=h[i+1]:
        ans.append(1)
    else:
        ans.append(0)

count = 0
s = []
for i in range(len(ans)):
    if ans[i]==1:
        count += 1
    else:
        s.append(count)
        count = 0
        continue
    s.append(count)

if s:
    print(max(s))
else:
    print(0)
a, b = map(int, inpit().split())
if (a*b) % 2 == 0:
  print("Even")
else:
  print("Odd")

### FIXED CODE ###

a, b = map(int, input().split())
if (a*b) % 2 == 0:
  print("Even")
else:
  print("Odd")
import 
n = int(input())
lst = list(map(int, input().split()))
dct = {i: 0 for i in range(n+1)}
for i in lst:
  dct[i] += 1

for i in range(2, n+1):
  print(dct[i])

### FIXED CODE ###

n = int(input())
lst = list(map(int, input().split()))
dct = {i: 0 for i in range(n+1)}
for i in lst:
  dct[i] += 1

for i in range(1, n+1):
  print(dct[i])
a = input()
alist = a. split(,)
alist[31]


### FIXED CODE ###

k = int(input())
alist = [1, 1, 1, 2, 1, 2, 1, 5, 2, 2, 1, 5, 1, 2, 1, 14, 1, 5, 1, 5, 2, 2, 1, 15, 2, 2, 5, 4, 1, 4, 1, 51]
print(alist[k-1])
from collections import defaultdict, Counter
from itertools import product, groupby, count, permutations, combinations
from math import pi, sqrt
from collections import deque
from bisect import bisect, bisect_left, bisect_right
from string import ascii_lowercase
from functools import lru_cache
import sys
sys.setrecursionlimit(10000)
INF = float("inf")
YES, Yes, yes, NO, No, no = "YES", "Yes", "yes", "NO", "No", "no"



def main():
    num = [10 ** 4, 10 ** 8, 10 ** 12, 10 ** 16, 10 ** 20, 10 ** 24, 10 ** 28, 10 ** 32, 10 ** 36, 10 ** 40, 10 ** 44, 10 ** 48, 10 ** 52, 10 ** 52, 10 ** 56, 10 ** 60, 10 ** 64, 10 ** 68]
    uni = ["Man", "Oku", "Cho", "Kei", "Gai", "Jo", "Jou", "Ko", "Kan", "Sei", "Sai", "Gok", "Gas", "Asg", "Nyt", "Fks", "Mts"]

    while True:
        m, n = map(int, input().split())
        if m == 0 and n == 0:
            break

        a = m ** n
        ans = ""
        for i in range(len(num) - 1, -1, -1):
            if a >= num[i]:
                ans += str(a // num[i]) + uni[i]
                a %= num[i]

        print(ans + str(a if a != 0 else ""))


if __name__ == '__main__':
    main()



### FIXED CODE ###

from collections import defaultdict, Counter
from itertools import product, groupby, count, permutations, combinations
from math import pi, sqrt
from collections import deque
from bisect import bisect, bisect_left, bisect_right
from string import ascii_lowercase
from functools import lru_cache
import sys
sys.setrecursionlimit(10000)
INF = float("inf")
YES, Yes, yes, NO, No, no = "YES", "Yes", "yes", "NO", "No", "no"


def main():
    num = [10 ** 4, 10 ** 8, 10 ** 12, 10 ** 16, 10 ** 20, 10 ** 24, 10 ** 28, 10 ** 32, 10 ** 36, 10 ** 40, 10 ** 44, 10 ** 48, 10 ** 52, 10 ** 56, 10 ** 60, 10 ** 64, 10 ** 68]
    uni = ["Man", "Oku", "Cho", "Kei", "Gai", "Jo", "Jou", "Ko", "Kan", "Sei", "Sai", "Gok", "Ggs", "Asg", "Nyt", "Fks", "Mts"]
    while True:
        m, n = map(int, input().split())
        if m == 0 and n == 0:
            break

        a = m ** n
        ans = ""
        for i in range(len(num) - 1, -1, -1):
            if a >= num[i]:
                ans += str(a // num[i]) + uni[i]
                a %= num[i]

        print(ans + str(a if a != 0 else ""))


if __name__ == '__main__':
    main()