20250719
# N, K=map(int, input().split())# W=list(map(int, input().split()))# H=[]# f=0# for z in range(K):# f+=W[z]# H.append(f)# for x in range(N-K):# f-=W[x]# f+=W[x+K]# H.append(f)# print(max(H))# def isprime(x) :# P = 1# for y in range(2, x):# if x % y == 0:# P = 0# return P == 1## M=int(input())# N=int(input())# n=[]# if M==1:# M+=1# for x in range(M, N+1):# if isprime(x) :# n.append(x)# if n==[]:# print(-1)# else:# print(sum(n))# print(n[0])'''재귀함수 recurisve function자신을 다시 호출하는 함수특징코드가짧고 간단하다 ( 보기 쉽다 )이해가 되는데, 왜 되는지 잘 모르겠는..'''# f(n) : 1 ~ n 출력# : 1 ~ n-1 출력 -> n출력# : f(n-1) -> print(n)# f(n) : n~ 1 출력# : n출력 -> n-1 ~ 1 출력# : print(n) -> f(n-1)# def f(n) :# if n==0 :# return# print(n)# f(n - 1) # 재귀호출## n = int(input())# f(n)# f(3) : f(2) -> print(3)# f(2) : f(1) -> print(2)# f(1) : f(0) -> print(1)# f(0) : 아무것도하면안됨!! return# def f(a,b):# if a>b:# return## if a % 2 ==1:# print(a, end=' ')## f(a + 1, b)# a,b=map(int, input().split())# f(a,b)# import sys# sys.setrecursionlimit(100000000)# def f(n) :# if n==0:# return 0# return (n + f(n-1))# n = int(input())# print(f(n))# def f(n):# if n==1:# return 1# return n*f(n-1)# n=int(input())# print(f(n))#def f(n):# if n==1 or n==2:# return 1# return f(n-2)+f(n-1)#n=int(input())#print(f(n))'''def f(n): if n == 1: print(n) return print(n) if n % 2 ==0: f(n//2) else: f(3*n+1)f(int(input()))a, b=map(int, input().split())def f(a,b): if a==1: return 1 if a==-1: if b % 2 ==0: return 1 else: return -1 if b==0: return 1 return f(a,b-1)*aprint(f(a,b))n, k=map(int,input().split())def f(n,k): if n>k-1: f(n//k, k) if n % k>9: print(chr(n%k+55),end='') else: print(n%k, end='')f(n,k)n, k = map(int, input().split())a, b =map(int, input().split())def f(a, b): if a==b: print(a) elif a>b: f(a//2,b) else: f(a,b//2)f(a,b)'''a, b=map(int, input().split())def f(a,b): if b == 2: return a * a elif b == 1: return a if b % 2 == 0: x = f(a, b // 2) return x ** else: x = f(a, b // 2) return (x **) * aprint(f(a,b)%1000000007)''' return a**b'''1회 조회




