use proconio::input; const MOD: i64 = 129402307; fn modpow(mut a: i64, mut e: i64, m: i64) -> i64{ let mut r: i64 = 1; while e > 0{ if e&1 == 1{ r = r*a%m; } a = a*a%m; e >>= 1; } r } fn main(){ input!{ n: String, m: String, } let mut a: i64 = 0; for c in n.chars(){ a *= 10; a += c.to_digit(10).unwrap() as i64; a %= MOD; } let mut e: i64 = 0; for c in m.chars(){ e *= 10; e += c.to_digit(10).unwrap() as i64; e %= MOD-1; } println!("{}", modpow(a, e, MOD)); }