import sys # input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### p = [] pmax = 3000000 + 10 a = [-1]*(pmax+1) for i in range(2,pmax+1): if a[i]==-1: p.append(i) for j in range(i,pmax+1,i): a[j] = i plen = len(p) def f(x): for i in p: if x==i: return 1 if x%i==0: return 0 return 1 def is_prime(x): if x == 1: return 0 if a[x]==x: return 1 return 0 def fastfact(x): r = [] while x > 1: p = a[x] c = 0 while a[x]==p: x//=p c += 1 r.append((p, c)) return r def calc(i): res = fastfact(i) x = 1 for p, c in res: z = 0 y = 1 for _ in range(c + 1): z += y y *= p x *= z x %= m # print(i, x) return x m = 10 ** 5 + 3 b = [0] * m for i in range(1, m): b[i] = calc(i) n, k = na() k -= 1 if k == 0: print(n) exit() k -= 1 n = calc(n) # print(k) # print(n) while k: if k % 2: n = b[n] c = [0] * m for i in range(n): c[i] = b[b[i]] b = c k >>= 1 print(n)