#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define D long long #define U unsigned using namespace std; D n, m, a, b, d, e; char c; bool g, h; string s; D ans; int main() { D i, j, k; string x, y; D ten,t; cin >> x >> y; reverse(x.begin(), x.end()); reverse(y.begin(), y.end()); ten = 1; for (auto z : x) { z -= '0'; a += z*ten; a %= 129402307; ten *= 10; ten %= 129402307; } ten = 1; for (auto z : y) { z -= '0'; b += z*ten; b %= 129402306; ten *= 10; ten %= 129402306; } t = 1; for (i = 1; i <= b; i++) { t *= a; t %= 129402307; if (t == 1) { b %= i; i = 1; } } cout << t << endl; }