def modulo(s: str, m: int) -> int: x = 0 for d in map(int, s): x = (10*x + d) % m return x def floyds_cycle_finding(a0, f) -> tuple[int, int]: """ フロイドの循環検出法 a0 : 初期値 f : 次の値を求める関数 return: tuple[サイクルに入るまでの長さ, サイクルの長さ] """ x = y = a0 while 1: x = f(x) y = f(f(y)) if x == y: break x = a0 head_len = 0 while x != y: x = f(x) y = f(y) head_len += 1 cycle_len = 0 while 1: x = f(x) y = f(f(y)) cycle_len += 1 if x == y: break return head_len, cycle_len def str_powmod(n: str, k: str, mod: int) -> int: a = modulo(n, mod) head_len, cycle_len = floyds_cycle_finding(a, lambda x: x * a % mod) assert head_len == 0 if cycle_len == 1: return a b = modulo(k, cycle_len) if b == 0: return a #b = cycle_len return pow(a, b, mod) N = input() K = input() x = str_powmod(N, K, 6) ans = '428571'[x] print(ans)