#include <iostream>
#include <string>
using std::string;
#define ll long long int
ll powerLL(ll x, ll n,ll MOD)
{
ll result = 1;
while (n) {
if (n & 1)
result = result * x % MOD;
n = n / 2;
x = x * x % MOD;
}
return result;
}
ll powerStrings(string sa, string sb,ll MOD)
{
ll a = 0, b = 0;
for (size_t i = 0; i < sa.length(); i++)
a = (a * 10 + (sa[i] - '0')) % MOD;
for (size_t i = 0; i < sb.length(); i++)
b = (b * 10 + (sb[i] - '0')) % 2146980;
return powerLL(a, b,MOD);
}
int main() {
std::cout << powerStrings("5109109785634228366587086207094636370893763284000","362323789",354252525) << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgc3RkOjpzdHJpbmc7CgojZGVmaW5lIGxsIGxvbmcgbG9uZyBpbnQKbGwgcG93ZXJMTChsbCB4LCBsbCBuLGxsIE1PRCkKICAgICAgICB7CgogICAgICAgIGxsIHJlc3VsdCA9IDE7CiAgIAoKIHdoaWxlIChuKSB7CiAgICAgICAgaWYgKG4gJiAxKQogICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICUgTU9EOwogICAgICAgIG4gPSBuIC8gMjsKICAgICAgICB4ID0geCAqIHggJSBNT0Q7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0Owp9CgoKbGwgcG93ZXJTdHJpbmdzKHN0cmluZyBzYSwgc3RyaW5nIHNiLGxsIE1PRCkKewoKCiAgICBsbCBhID0gMCwgYiA9IDA7CgoKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2EubGVuZ3RoKCk7IGkrKykKICAgICAgICBhID0gKGEgKiAxMCArIChzYVtpXSAtICcwJykpICUgTU9EOwoKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2IubGVuZ3RoKCk7IGkrKykKICAgICAgICBiID0gKGIgKiAxMCArIChzYltpXSAtICcwJykpICUgMjE0Njk4MDsKCiAgICByZXR1cm4gcG93ZXJMTChhLCBiLE1PRCk7Cn0KCmludCBtYWluKCkgewoJc3RkOjpjb3V0IDw8IHBvd2VyU3RyaW5ncygiNTEwOTEwOTc4NTYzNDIyODM2NjU4NzA4NjIwNzA5NDYzNjM3MDg5Mzc2MzI4NDAwMCIsIjM2MjMyMzc4OSIsMzU0MjUyNTI1KSA8PCAiXG4iOwp9