#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll bin_exp_recursive(ll taban, ll us, ll mod) {
// Base case (durmamız gereken durum).
if (!us)
return 1;
taban %= mod;
ll alt_cevap = bin_exp_recursive(taban, us / 2, mod);
ll carp = us % 2 ? taban : 1;
return alt_cevap * alt_cevap % mod * carp % mod;
}
int main() {
ll taban, us, mod;
cin >> taban >> us >> mod;
cout << taban << "^" << us << " mod " << mod << " = " << bin_exp_recursive(taban, us, mod) << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKbGwgYmluX2V4cF9yZWN1cnNpdmUobGwgdGFiYW4sIGxsIHVzLCBsbCBtb2QpIHsKICAgIC8vIEJhc2UgY2FzZSAoZHVybWFtxLF6IGdlcmVrZW4gZHVydW0pLgogICAgaWYgKCF1cykKICAgICAgICByZXR1cm4gMTsKCiAgICB0YWJhbiAlPSBtb2Q7CgogICAgbGwgYWx0X2NldmFwID0gYmluX2V4cF9yZWN1cnNpdmUodGFiYW4sIHVzIC8gMiwgbW9kKTsKICAgIGxsIGNhcnAgPSB1cyAlIDIgPyB0YWJhbiA6IDE7CgogICAgcmV0dXJuIGFsdF9jZXZhcCAqIGFsdF9jZXZhcCAlIG1vZCAqIGNhcnAgJSBtb2Q7Cn0KCmludCBtYWluKCkgewogICAgbGwgdGFiYW4sIHVzLCBtb2Q7CiAgICBjaW4gPj4gdGFiYW4gPj4gdXMgPj4gbW9kOwogICAgY291dCA8PCB0YWJhbiA8PCAiXiIgPDwgdXMgPDwgIiBtb2QgIiA8PCBtb2QgPDwgIiA9ICIgPDwgYmluX2V4cF9yZWN1cnNpdmUodGFiYW4sIHVzLCBtb2QpIDw8ICJcbiI7Cn0=