#include int main() { char N[1048576]; char M[1048576]; uint64_t p = 129402307; scanf("%s", N); scanf("%s", M); int N_size = strlen(N); int M_size = strlen(M); uint64_t n = 0; uint64_t m = 0; for(int i = 0; i < N_size; ++i) { n = (n * 10 + (N[i] - '0')) % p; } for(int i = 0; i < M_size; ++i) { m = (m * 10 + (M[i] - '0')) % (p - 1); } uint64_t ans = 1; while( m != 0 ) { if( (m & 0x01) != 0 ) { ans = ans * n % p; } n = (n * n) % p; m >>= 1; } printf("%ld\n", ans); return 0; }