module main; // https://torus711.hatenablog.com/entry/2015/07/25/052607 より // 反復二乗法、剰余 import std; immutable MOD = 129_402_307L; void main() { // 入力 auto N = readln.chomp; auto M = readln.chomp; // 答えの計算 long a = 0; foreach (c; N) { a *= 10; a += c - '0'; a %= MOD; } long res = 1; foreach_reverse (i; 0 .. M.length.to!int) { const D = M[i] - '0'; foreach (j; 0 .. D) (res *= a) %= MOD; long na = 1; foreach (j; 0 .. 10) (na *= a) %= MOD; a = na; } // 答えの出力 writeln(res); }